{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "10108f95",
   "metadata": {},
   "source": [
    "# Getting Started"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb70e585",
   "metadata": {},
   "source": [
    "## Printing the best bid and the best ask"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0f0e1b5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "from numba import njit\n",
    "\n",
    "import numpy as np\n",
    "\n",
    "# numba.njit is strongly recommended for fast backtesting.\n",
    "@njit\n",
    "def print_bbo(hbt):\n",
    "    # Iterating until hftbacktest reaches the end of data.\n",
    "    # Elapses 60-sec every iteration.\n",
    "    # Time unit is the same as data's timestamp's unit.\n",
    "    # Timestamp of the sample data is in nanoseconds.\n",
    "    while hbt.elapse(60 * 1e9) == 0:        \n",
    "        # Gets the market depth for the first asset.\n",
    "        depth = hbt.depth(0)\n",
    "\n",
    "        # Prints the best bid and the best offer.\n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp,\n",
    "            ', best_bid:', np.round(depth.best_bid, 1),\n",
    "            ', best_ask:', np.round(depth.best_ask, 1)\n",
    "        )\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d9e717ec",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import BacktestAsset, HashMapMarketDepthBacktest\n",
    "\n",
    "asset = (\n",
    "    BacktestAsset()\n",
    "        # Sets the data to feed for this asset.\n",
    "        #\n",
    "        # Due to the vast size of tick-by-tick market depth and trade data,\n",
    "        # loading the entire dataset into memory can be challenging,\n",
    "        # particularly when backtesting across multiple days.\n",
    "        # HftBacktest offers lazy loading support and is compatible with npy and preferably npz.\n",
    "        #\n",
    "        # For details on the normalized feed data, refer to the following documents.\n",
    "        # * https://hftbacktest.readthedocs.io/en/latest/data.html    \n",
    "        # * https://hftbacktest.readthedocs.io/en/latest/tutorials/Data%20Preparation.html\n",
    "        .data(['usdm/btcusdt_20240809.npz'])\n",
    "        # Sets the initial snapshot (optional).\n",
    "        .initial_snapshot('usdm/btcusdt_20240808_eod.npz')\n",
    "        # Asset type:\n",
    "        # * Linear\n",
    "        # * Inverse.\n",
    "        # 1.0 represents the contract size, which is the value of the asset per quoted price.\n",
    "        .linear_asset(1.0) \n",
    "        # HftBacktest provides two built-in latency models.\n",
    "        # * constant_latency\n",
    "        # * intp_order_latency\n",
    "        # To implement your own latency model, please use Rust.\n",
    "        # \n",
    "        # Time unit is the same as data's timestamp's unit. Timestamp of the sample data is in nanoseconds.\n",
    "        # Sets the order entry latency and response latency to 10ms.\n",
    "        .constant_latency(10_000_000, 10_000_000)\n",
    "        # HftBacktest provides several types of built-in queue position models.\n",
    "        # Please find the details in the documents below.\n",
    "        # https://hftbacktest.readthedocs.io/en/latest/tutorials/Probability%20Queue%20Models.html\n",
    "        #\n",
    "        # To implement your own queue position model, please use Rust.\n",
    "        .risk_adverse_queue_model() \n",
    "        # HftBacktest provides two built-in exchange models.\n",
    "        # * no_partial_fill_exchange\n",
    "        # * partial_fill_exchange\n",
    "        # To implement your own exchange model, please use Rust.\n",
    "        .no_partial_fill_exchange()\n",
    "        # HftBacktest provides several built-in fee models.\n",
    "        # * trading_value_fee_model\n",
    "        # * trading_qty_fee_model\n",
    "        # * flat_per_trade_fee_model\n",
    "        #\n",
    "        # 0.02% maker fee and 0.07% taker fee. If the fee is negative, it represents a rebate.\n",
    "        # For example, -0.00005 represents a 0.005% rebate for the maker order.\n",
    "        .trading_value_fee_model(0.0002, 0.0007)\n",
    "        # Tick size of this asset: minimum price increasement\n",
    "        .tick_size(0.1)\n",
    "        # Lot size of this asset: minimum trading unit.\n",
    "        .lot_size(0.001)\n",
    "        # Sets the capacity of the vector that stores trades occurring in the market.\n",
    "        # If you set the size, you need call `clear_last_trades` to clear the vector.\n",
    "        # A value of 0 indicates that no market trades are stored. (Default)\n",
    "        .last_trades_capacity(0)\n",
    ")\n",
    "\n",
    "# HftBacktest provides several types of built-in market depth implementations.\n",
    "# HashMapMarketDepthBacktest constructs a Backtest using a HashMap-based market depth implementation.\n",
    "# Another useful implementation is ROIVectorMarketDepth, which is utilized in ROIVectorMarketDepthBacktest.\n",
    "# Please find the details in the document below.\n",
    "hbt = HashMapMarketDepthBacktest([asset])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d4ecb19",
   "metadata": {},
   "source": [
    "You can see the best bid and best ask every 60 seconds. Since the price is a 32-bit float, there may be floating-point errors. Be careful when using it. In the example, for readability, the price is rounded based on the tick size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "128fb48a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , best_bid: 61594.1 , best_ask: 61594.2\n",
      "current_timestamp: 1723161721500000000 , best_bid: 61576.5 , best_ask: 61576.6\n",
      "current_timestamp: 1723161781500000000 , best_bid: 61629.6 , best_ask: 61629.7\n",
      "current_timestamp: 1723161841500000000 , best_bid: 61621.5 , best_ask: 61621.6\n",
      "current_timestamp: 1723161901500000000 , best_bid: 61583.9 , best_ask: 61584.0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print_bbo(hbt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b316f2f-433c-423e-83a3-95451f4951e8",
   "metadata": {},
   "source": [
    "HftBacktest cannot be reused. Therefore, after using the backtest, make sure to close it. If you use the backtest after closing, it will crash."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7a2be482-1796-4aa3-8781-8fc991e93064",
   "metadata": {},
   "outputs": [],
   "source": [
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7754e06a",
   "metadata": {},
   "source": [
    "## Feeding the data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b0003e60",
   "metadata": {},
   "source": [
    "When you possess adequate memory, preloading the data into memory and providing it as input will be more efficient than lazy-loading during repeated backtesting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7dca08d3-4434-4410-9952-8b20ffe07670",
   "metadata": {},
   "outputs": [],
   "source": [
    "btcusdt_20230809 = np.load('usdm/btcusdt_20240809.npz')['data']\n",
    "btcusdt_20230808_eod = np.load('usdm/btcusdt_20240808_eod.npz')['data']\n",
    "\n",
    "asset = (\n",
    "    BacktestAsset()\n",
    "        .data([btcusdt_20230809])\n",
    "        .initial_snapshot(btcusdt_20230808_eod)\n",
    "        .linear_asset(1.0) \n",
    "        .constant_latency(10_000_000, 10_000_000)\n",
    "        .risk_adverse_queue_model() \n",
    "        .no_partial_fill_exchange()\n",
    "        .trading_value_fee_model(0.0002, 0.0007)\n",
    "        .tick_size(0.1)\n",
    "        .lot_size(0.001)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d4b907f3-fc83-4ca9-8c95-7475f2bc0e3c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , best_bid: 61594.1 , best_ask: 61594.2\n",
      "current_timestamp: 1723161721500000000 , best_bid: 61576.5 , best_ask: 61576.6\n",
      "current_timestamp: 1723161781500000000 , best_bid: 61629.6 , best_ask: 61629.7\n",
      "current_timestamp: 1723161841500000000 , best_bid: 61621.5 , best_ask: 61621.6\n",
      "current_timestamp: 1723161901500000000 , best_bid: 61583.9 , best_ask: 61584.0\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "print_bbo(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ec3131e",
   "metadata": {},
   "source": [
    "## Getting the market depth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "467b649d",
   "metadata": {},
   "outputs": [],
   "source": [
    "@njit\n",
    "def print_3depth(hbt):\n",
    "    while hbt.elapse(60 * 1e9) == 0:\n",
    "        print('current_timestamp:', hbt.current_timestamp)\n",
    "\n",
    "        # Gets the market depth for the first asset, in the same order as when you created the backtest.\n",
    "        depth = hbt.depth(0)\n",
    "\n",
    "        # a key of bid_depth or ask_depth is price in ticks.\n",
    "        # (integer) price_tick = price / tick_size\n",
    "        i = 0\n",
    "        for tick_price in range(depth.best_ask_tick, depth.best_ask_tick + 100):\n",
    "            qty = depth.ask_qty_at_tick(tick_price)\n",
    "            if qty > 0:\n",
    "                print(\n",
    "                    'ask: ',\n",
    "                    qty,\n",
    "                    '@',\n",
    "                    np.round(tick_price * depth.tick_size, 1)\n",
    "                )\n",
    "                \n",
    "                i += 1\n",
    "                if i == 3:\n",
    "                    break\n",
    "        i = 0\n",
    "        for tick_price in range(depth.best_bid_tick, max(depth.best_bid_tick - 100, 0), -1):\n",
    "            qty = depth.bid_qty_at_tick(tick_price)\n",
    "            if qty > 0:\n",
    "                print(\n",
    "                    'bid: ',\n",
    "                    qty,\n",
    "                    '@',\n",
    "                    np.round(tick_price * depth.tick_size, 1)\n",
    "                )\n",
    "            \n",
    "                i += 1\n",
    "                if i == 3:\n",
    "                    break\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "74311eb7-ecb5-4c61-b677-f8373a9169d4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000\n",
      "ask:  1.759 @ 61594.2\n",
      "ask:  0.006 @ 61594.4\n",
      "ask:  0.114 @ 61595.2\n",
      "bid:  3.526 @ 61594.1\n",
      "bid:  0.016 @ 61594.0\n",
      "bid:  0.002 @ 61593.9\n",
      "current_timestamp: 1723161721500000000\n",
      "ask:  2.575 @ 61576.6\n",
      "ask:  0.004 @ 61576.7\n",
      "ask:  0.455 @ 61577.0\n",
      "bid:  2.558 @ 61576.5\n",
      "bid:  0.002 @ 61576.0\n",
      "bid:  0.515 @ 61575.5\n",
      "current_timestamp: 1723161781500000000\n",
      "ask:  0.131 @ 61629.7\n",
      "ask:  0.005 @ 61630.1\n",
      "ask:  0.005 @ 61630.5\n",
      "bid:  5.742 @ 61629.6\n",
      "bid:  0.247 @ 61629.4\n",
      "bid:  0.034 @ 61629.3\n",
      "current_timestamp: 1723161841500000000\n",
      "ask:  0.202 @ 61621.6\n",
      "ask:  0.002 @ 61622.5\n",
      "ask:  0.003 @ 61622.6\n",
      "bid:  3.488 @ 61621.5\n",
      "bid:  0.86 @ 61620.0\n",
      "bid:  0.248 @ 61619.6\n",
      "current_timestamp: 1723161901500000000\n",
      "ask:  1.397 @ 61584.0\n",
      "ask:  0.832 @ 61585.1\n",
      "ask:  0.132 @ 61586.0\n",
      "bid:  3.307 @ 61583.9\n",
      "bid:  0.01 @ 61583.8\n",
      "bid:  0.002 @ 61582.0\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "print_3depth(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b27f7386",
   "metadata": {},
   "source": [
    "## Submitting an order"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d5e29cfe",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import LIMIT, GTC, NONE, NEW, FILLED, CANCELED, EXPIRED\n",
    "\n",
    "@njit\n",
    "def print_orders(hbt):\n",
    "    # You can access open orders and also closed orders via hbt.orders.\n",
    "    # Gets the OrderDict for the first asset.\n",
    "    orders = hbt.orders(0)\n",
    "    \n",
    "    # hbt.orders is a dictionary, but be aware that it does not support all dict methods, and its keys are order_id (int).\n",
    "    order_values = orders.values()\n",
    "    while order_values.has_next():\n",
    "        order = order_values.get()\n",
    "    \n",
    "        order_status = ''\n",
    "        if order.status == NONE:\n",
    "            order_status = 'NONE' # Exchange hasn't received an order yet.\n",
    "        elif order.status == NEW:\n",
    "            order_status = 'NEW'\n",
    "        elif order.status == FILLED:\n",
    "            order_status = 'FILLED'\n",
    "        elif order.status == CANCELED:\n",
    "            order_status = 'CANCELED'\n",
    "        elif order.status == EXPIRED:\n",
    "            order_status = 'EXPIRED' \n",
    "            \n",
    "        order_req = ''\n",
    "        if order.req == NONE:\n",
    "            order_req = 'NONE'\n",
    "        elif order.req == NEW:\n",
    "            order_req = 'NEW'\n",
    "        elif order.req == CANCELED:\n",
    "            order_req = 'CANCEL'\n",
    "            \n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp, \n",
    "             ', order_id:', order.order_id,\n",
    "             ', order_price:', np.round(order.price, 1),\n",
    "             ', order_qty:', order.qty,\n",
    "             ', order_status:', order_status,\n",
    "             ', order_req:', order_req\n",
    "        )\n",
    "\n",
    "@njit\n",
    "def submit_order(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(30 * 1e9) == 0:\n",
    "        # Prints open orders.\n",
    "        print_orders(hbt)\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            # Submits a buy order at 300 ticks below the best bid for the first asset.\n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid - 300 * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC # Good 'till cancel\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ade32153",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161691500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161721500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161751500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161781500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161811500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161841500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161871500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161901500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "submit_order(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "edcdf5c0",
   "metadata": {},
   "source": [
    "## Clearing inactive orders (FILLED, CANCELED, EXPIRED)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "f163eef1",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import GTC\n",
    "\n",
    "@njit\n",
    "def clear_inactive_orders(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(30 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        # Removes inactive(FILLED, CANCELED, EXPIRED) orders from hbt.orders for the first asset.\n",
    "        hbt.clear_inactive_orders(0)\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid - 300 * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "821f9e56-5611-4e58-8b88-611fd277144f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , order_id: 1 , order_price: 61643.8 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "clear_inactive_orders(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d6d85dd",
   "metadata": {},
   "source": [
    "## Watching a order status - pending due to order latency"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "859bca22",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import GTC\n",
    "\n",
    "@njit\n",
    "def watch_pending(hbt):\n",
    "    is_order_submitted = False\n",
    "    # Elapses 0.01-sec every iteration.\n",
    "    while hbt.elapse(0.01 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid - 300 * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            is_order_submitted = True\n",
    "            \n",
    "        # Prevents too many prints\n",
    "        orders = hbt.orders(0)\n",
    "        order = orders.get(order_id)\n",
    "        if order.status == NEW:\n",
    "            return False\n",
    "    return True"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ea8e3c4-b972-4472-ab33-2f79eba54035",
   "metadata": {},
   "source": [
    "The `order_status` is `None` until the acceptance message is received."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a0c2e47e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161601520000000 , order_id: 1 , order_price: 61629.7 , order_qty: 1.0 , order_status: NONE , order_req: NEW\n",
      "current_timestamp: 1723161601530000000 , order_id: 1 , order_price: 61629.7 , order_qty: 1.0 , order_status: NEW , order_req: NONE\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "watch_pending(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "00c1f5ed",
   "metadata": {},
   "source": [
    "## Waiting for an order response"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "b2e43564",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import GTC\n",
    "\n",
    "@njit\n",
    "def wait_for_order_response(hbt):\n",
    "    order_id = 0\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(0.01 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "        \n",
    "        # Prevents too many prints\n",
    "        orders = hbt.orders(0)\n",
    "        if order_id in orders:\n",
    "            if orders.get(order_id).status == NEW:\n",
    "                return False\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            # Waits for the order response for a given order id for the first asset.\n",
    "            print('an order is submitted at', hbt.current_timestamp)\n",
    "\n",
    "            # Timeout is set 1-second.\n",
    "            hbt.wait_order_response(0, order_id, 1 * 1e9)\n",
    "            print('an order response is received at', hbt.current_timestamp)\n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41d43022-fcef-4d73-a8fd-4d94ad1b8e29",
   "metadata": {},
   "source": [
    "Since the `ConstantLatency` model is used, the round-trip latency is exactly 200ms. Ideally, using historical order latency data collected from the live market is the best approach. However, if this data is not available, starting with artificially generated order latency based on feed latency is another option. We will explore this in the following examples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fcfb211b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "an order is submitted at 1723161601510000000\n",
      "an order response is received at 1723161601530000000\n",
      "current_timestamp: 1723161601540000000 , order_id: 1 , order_price: 61659.7 , order_qty: 1.0 , order_status: NEW , order_req: NONE\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "wait_for_order_response(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b8c27280",
   "metadata": {},
   "source": [
    "## Printing position, balance, fee, and equity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c38365d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "@njit\n",
    "def position(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(60 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "        \n",
    "        # Prints position\n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp,\n",
    "            ', position:', hbt.position(0),\n",
    "            ', balance:', hbt.state_values(0).balance,\n",
    "            ', fee:', hbt.state_values(0).fee\n",
    "        )\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            \n",
    "            # Timeout is set 1-second.\n",
    "            hbt.wait_order_response(0, order_id, 1e9)\n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a9cf70b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "current_timestamp: 1723161721520000000 , order_id: 1 , order_price: 61594.1 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161721520000000 , position: 1.0 , balance: -61594.100000000006 , fee: 12.318820000000002\n",
      "current_timestamp: 1723161781520000000 , position: 1.0 , balance: -61594.100000000006 , fee: 12.318820000000002\n",
      "current_timestamp: 1723161841520000000 , position: 1.0 , balance: -61594.100000000006 , fee: 12.318820000000002\n",
      "current_timestamp: 1723161901520000000 , position: 1.0 , balance: -61594.100000000006 , fee: 12.318820000000002\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "position(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d6c739c",
   "metadata": {},
   "source": [
    "## Canceling an open order"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "502bf0f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "@njit\n",
    "def submit_and_cancel_order(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(0.1 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "        \n",
    "        # Cancels if there is an open order\n",
    "        orders = hbt.orders(0)\n",
    "        order_values = orders.values()\n",
    "        while order_values.has_next():\n",
    "            order = order_values.get()\n",
    "            \n",
    "            # an order is only cancellable if order status is NEW.\n",
    "            # cancel request is negated if the order is already filled or filled before cancel request is processed.\n",
    "            if order.cancellable:\n",
    "                hbt.cancel(0, order.order_id, False)\n",
    "                # You can see status still NEW and see req CANCEL.\n",
    "                print_orders(hbt)\n",
    "                # cancels request also has order entry/response latencies the same as submitting.\n",
    "                hbt.wait_order_response(0, order.order_id, 1e9)\n",
    "       \n",
    "        if not is_order_submitted:\n",
    "            depth = hbt.depth(0)\n",
    "            \n",
    "            order_id = 1\n",
    "            order_price = depth.best_bid - 100 * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            \n",
    "            # Timeout is set 1-second.\n",
    "            hbt.wait_order_response(0, order_id, 1e9)\n",
    "            is_order_submitted = True\n",
    "        else:\n",
    "            if len(hbt.orders(0)) == 0:\n",
    "                return False\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "638c3012",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161601720000000 , order_id: 1 , order_price: 61649.7 , order_qty: 1.0 , order_status: NEW , order_req: NONE\n",
      "current_timestamp: 1723161601720000000 , order_id: 1 , order_price: 61649.7 , order_qty: 1.0 , order_status: NEW , order_req: CANCEL\n",
      "current_timestamp: 1723161601840000000 , order_id: 1 , order_price: 61649.7 , order_qty: 1.0 , order_status: CANCELED , order_req: NONE\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "submit_and_cancel_order(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a60476c",
   "metadata": {},
   "source": [
    "## Market order"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "9e87515b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import MARKET\n",
    "\n",
    "@njit\n",
    "def print_orders_exec_price(hbt):\n",
    "    orders = hbt.orders(0)\n",
    "    order_values = orders.values()\n",
    "    while order_values.has_next():\n",
    "        order = order_values.get()\n",
    "            \n",
    "        order_status = ''\n",
    "        if order.status == NONE:\n",
    "            order_status = 'NONE'\n",
    "        elif order.status == NEW:\n",
    "            order_status = 'NEW'\n",
    "        elif order.status == FILLED:\n",
    "            order_status = 'FILLED'\n",
    "        elif order.status == CANCELED:\n",
    "            order_status = 'CANCELED'\n",
    "        elif order.status == EXPIRED:\n",
    "            order_status = 'EXPIRED' \n",
    "            \n",
    "        order_req = ''\n",
    "        if order.req == NONE:\n",
    "            order_req = 'NONE'\n",
    "        elif order.req == NEW:\n",
    "            order_req = 'NEW'\n",
    "        elif order.req == CANCELED:\n",
    "            order_req = 'CANCEL'\n",
    "            \n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp, \n",
    "             ', order_id:', order.order_id,\n",
    "             ', order_price:', np.round(order.price, 1),\n",
    "             ', order_qty:', order.qty,\n",
    "             ', order_status:', order_status,\n",
    "             ', exec_price:', np.round(order.exec_price, 1)\n",
    "        )\n",
    "        \n",
    "@njit\n",
    "def market_order(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(60 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "\n",
    "        state_values = hbt.state_values(0)\n",
    "        \n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp,\n",
    "             ', position:', hbt.position(0),\n",
    "             ', balance:', state_values.balance,\n",
    "             ', fee:', state_values.fee\n",
    "        )\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            depth = hbt.depth(0)\n",
    "            \n",
    "            order_id = 1\n",
    "            # Sets an arbitrary price, which does not affect MARKET orders.\n",
    "            order_price = depth.best_bid\n",
    "            order_qty = 1\n",
    "            time_in_force = GTC\n",
    "            order_type = MARKET\n",
    "            hbt.submit_sell_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            hbt.wait_order_response(0, order_id, 1e9)\n",
    "            # You can see the order immediately filled.\n",
    "            # Also you can see the order executed at the best bid which is different from what it was submitted at.\n",
    "            print('best_bid:', depth.best_bid)\n",
    "            print_orders_exec_price(hbt)            \n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "0b6003d9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "best_bid: 61594.100000000006\n",
      "current_timestamp: 1723161661520000000 , order_id: 1 , order_price: 61594.1 , order_qty: 1.0 , order_status: FILLED , exec_price: 61594.1\n",
      "current_timestamp: 1723161721520000000 , order_id: 1 , order_price: 61594.1 , order_qty: 1.0 , order_status: FILLED , order_req: NONE\n",
      "current_timestamp: 1723161721520000000 , position: -1.0 , balance: 61594.100000000006 , fee: 43.11587\n",
      "current_timestamp: 1723161781520000000 , position: -1.0 , balance: 61594.100000000006 , fee: 43.11587\n",
      "current_timestamp: 1723161841520000000 , position: -1.0 , balance: 61594.100000000006 , fee: 43.11587\n",
      "current_timestamp: 1723161901520000000 , position: -1.0 , balance: 61594.100000000006 , fee: 43.11587\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "market_order(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "980ebc4d",
   "metadata": {},
   "source": [
    "## GTX, Post-Only order"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "1b0255bb",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import GTX\n",
    "\n",
    "@njit\n",
    "def submit_gtx(hbt):\n",
    "    is_order_submitted = False\n",
    "    while hbt.elapse(60 * 1e9) == 0:\n",
    "        print_orders(hbt)\n",
    "        \n",
    "        hbt.clear_inactive_orders(0)\n",
    "        \n",
    "        state_values = hbt.state_values(0)\n",
    "        \n",
    "        print(\n",
    "            'current_timestamp:', hbt.current_timestamp,\n",
    "             ', position:', hbt.position(0),\n",
    "             ', balance:', state_values.balance,\n",
    "             ', fee:', state_values.fee\n",
    "        )\n",
    "        \n",
    "        if not is_order_submitted:\n",
    "            depth = hbt.depth(0)\n",
    "            \n",
    "            order_id = 1\n",
    "            # Sets a deep price in the opposite side and it will be rejected by GTX.\n",
    "            order_price = depth.best_bid - 100 * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTX\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_sell_order(0, order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "            hbt.wait_order_response(0, order_id, 1e9)\n",
    "            is_order_submitted = True\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "f1030532",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "current_timestamp: 1723161661500000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "current_timestamp: 1723161721520000000 , order_id: 1 , order_price: 61584.1 , order_qty: 1.0 , order_status: EXPIRED , order_req: NONE\n",
      "current_timestamp: 1723161721520000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "current_timestamp: 1723161781520000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "current_timestamp: 1723161841520000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n",
      "current_timestamp: 1723161901520000000 , position: 0.0 , balance: 0.0 , fee: 0.0\n"
     ]
    }
   ],
   "source": [
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "submit_gtx(hbt)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eff830d3",
   "metadata": {},
   "source": [
    "## Plotting BBO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "641721c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "@njit\n",
    "def plot_bbo(hbt, local_timestamp, best_bid, best_ask):\n",
    "    while hbt.elapse(1 * 1e9) == 0:\n",
    "        # Records data points\n",
    "        local_timestamp.append(hbt.current_timestamp)\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        best_bid.append(depth.best_bid)\n",
    "        best_ask.append(depth.best_ask)\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "9ecfecc8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function now() {\n",
       "    return new Date();\n",
       "  }\n",
       "\n",
       "  var force = true;\n",
       "  var py_version = '3.4.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",
       "  var reloading = false;\n",
       "  var Bokeh = root.Bokeh;\n",
       "\n",
       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
       "    root._bokeh_timeout = Date.now() + 5000;\n",
       "    root._bokeh_failed_load = false;\n",
       "  }\n",
       "\n",
       "  function run_callbacks() {\n",
       "    try {\n",
       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
       "        if (callback != null)\n",
       "          callback();\n",
       "      });\n",
       "    } finally {\n",
       "      delete root._bokeh_onload_callbacks;\n",
       "    }\n",
       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
       "  }\n",
       "\n",
       "  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
       "    if (css_urls == null) css_urls = [];\n",
       "    if (js_urls == null) js_urls = [];\n",
       "    if (js_modules == null) js_modules = [];\n",
       "    if (js_exports == null) js_exports = {};\n",
       "\n",
       "    root._bokeh_onload_callbacks.push(callback);\n",
       "\n",
       "    if (root._bokeh_is_loading > 0) {\n",
       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "      return null;\n",
       "    }\n",
       "    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
       "      run_callbacks();\n",
       "      return null;\n",
       "    }\n",
       "    if (!reloading) {\n",
       "      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "    }\n",
       "\n",
       "    function on_load() {\n",
       "      root._bokeh_is_loading--;\n",
       "      if (root._bokeh_is_loading === 0) {\n",
       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
       "        run_callbacks()\n",
       "      }\n",
       "    }\n",
       "    window._bokeh_on_load = on_load\n",
       "\n",
       "    function on_error() {\n",
       "      console.error(\"failed to load \" + url);\n",
       "    }\n",
       "\n",
       "    var skip = [];\n",
       "    if (window.requirejs) {\n",
       "      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n",
       "      root._bokeh_is_loading = css_urls.length + 0;\n",
       "    } else {\n",
       "      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
       "    }\n",
       "\n",
       "    var existing_stylesheets = []\n",
       "    var links = document.getElementsByTagName('link')\n",
       "    for (var i = 0; i < links.length; i++) {\n",
       "      var link = links[i]\n",
       "      if (link.href != null) {\n",
       "\texisting_stylesheets.push(link.href)\n",
       "      }\n",
       "    }\n",
       "    for (var i = 0; i < css_urls.length; i++) {\n",
       "      var url = css_urls[i];\n",
       "      if (existing_stylesheets.indexOf(url) !== -1) {\n",
       "\ton_load()\n",
       "\tcontinue;\n",
       "      }\n",
       "      const element = document.createElement(\"link\");\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.rel = \"stylesheet\";\n",
       "      element.type = \"text/css\";\n",
       "      element.href = url;\n",
       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
       "      document.body.appendChild(element);\n",
       "    }    var existing_scripts = []\n",
       "    var scripts = document.getElementsByTagName('script')\n",
       "    for (var i = 0; i < scripts.length; i++) {\n",
       "      var script = scripts[i]\n",
       "      if (script.src != null) {\n",
       "\texisting_scripts.push(script.src)\n",
       "      }\n",
       "    }\n",
       "    for (var i = 0; i < js_urls.length; i++) {\n",
       "      var url = js_urls[i];\n",
       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    for (var i = 0; i < js_modules.length; i++) {\n",
       "      var url = js_modules[i];\n",
       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      element.type = \"module\";\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    for (const name in js_exports) {\n",
       "      var url = js_exports[name];\n",
       "      if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.type = \"module\";\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      element.textContent = `\n",
       "      import ${name} from \"${url}\"\n",
       "      window.${name} = ${name}\n",
       "      window._bokeh_on_load()\n",
       "      `\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    if (!js_urls.length && !js_modules.length) {\n",
       "      on_load()\n",
       "    }\n",
       "  };\n",
       "\n",
       "  function inject_raw_css(css) {\n",
       "    const element = document.createElement(\"style\");\n",
       "    element.appendChild(document.createTextNode(css));\n",
       "    document.body.appendChild(element);\n",
       "  }\n",
       "\n",
       "  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.2.min.js\", \"https://cdn.holoviz.org/panel/1.4.4/dist/panel.min.js\"];\n",
       "  var js_modules = [];\n",
       "  var js_exports = {};\n",
       "  var css_urls = [];\n",
       "  var inline_js = [    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "function(Bokeh) {} // ensure no trailing comma for IE\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    if ((root.Bokeh !== undefined) || (force === true)) {\n",
       "      for (var i = 0; i < inline_js.length; i++) {\n",
       "\ttry {\n",
       "          inline_js[i].call(root, root.Bokeh);\n",
       "\t} catch(e) {\n",
       "\t  if (!reloading) {\n",
       "\t    throw e;\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "      // Cache old bokeh versions\n",
       "      if (Bokeh != undefined && !reloading) {\n",
       "\tvar NewBokeh = root.Bokeh;\n",
       "\tif (Bokeh.versions === undefined) {\n",
       "\t  Bokeh.versions = new Map();\n",
       "\t}\n",
       "\tif (NewBokeh.version !== Bokeh.version) {\n",
       "\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
       "\t}\n",
       "\troot.Bokeh = Bokeh;\n",
       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(run_inline_js, 100);\n",
       "    } else if (!root._bokeh_failed_load) {\n",
       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "      root._bokeh_failed_load = true;\n",
       "    }\n",
       "    root._bokeh_is_initializing = false\n",
       "  }\n",
       "\n",
       "  function load_or_wait() {\n",
       "    // Implement a backoff loop that tries to ensure we do not load multiple\n",
       "    // versions of Bokeh and its dependencies at the same time.\n",
       "    // In recent versions we use the root._bokeh_is_initializing flag\n",
       "    // to determine whether there is an ongoing attempt to initialize\n",
       "    // bokeh, however for backward compatibility we also try to ensure\n",
       "    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
       "    // before older versions are fully initialized.\n",
       "    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
       "      root._bokeh_is_initializing = false;\n",
       "      root._bokeh_onload_callbacks = undefined;\n",
       "      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
       "      load_or_wait();\n",
       "    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
       "      setTimeout(load_or_wait, 100);\n",
       "    } else {\n",
       "      root._bokeh_is_initializing = true\n",
       "      root._bokeh_onload_callbacks = []\n",
       "      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
       "      if (!reloading && !bokeh_loaded) {\n",
       "\troot.Bokeh = undefined;\n",
       "      }\n",
       "      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
       "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "\trun_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }\n",
       "  // Give older versions of the autoload script a head-start to ensure\n",
       "  // they initialize before we start loading newer version.\n",
       "  setTimeout(load_or_wait, 100)\n",
       "}(window));"
      ],
      "application/vnd.holoviews_load.v0+json": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n  var py_version = '3.4.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  var reloading = false;\n  var Bokeh = root.Bokeh;\n\n  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      run_callbacks();\n      return null;\n    }\n    if (!reloading) {\n      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    var skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n      root._bokeh_is_loading = css_urls.length + 0;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    var existing_stylesheets = []\n    var links = document.getElementsByTagName('link')\n    for (var i = 0; i < links.length; i++) {\n      var link = links[i]\n      if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n      }\n    }\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    var existing_scripts = []\n    var scripts = document.getElementsByTagName('script')\n    for (var i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n\texisting_scripts.push(script.src)\n      }\n    }\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (var i = 0; i < js_modules.length; i++) {\n      var url = js_modules[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      var url = js_exports[name];\n      if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.2.min.js\", \"https://cdn.holoviz.org/panel/1.4.4/dist/panel.min.js\"];\n  var js_modules = [];\n  var js_exports = {};\n  var css_urls = [];\n  var inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n          inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t  if (!reloading) {\n\t    throw e;\n\t  }\n\t}\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t  Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
       "  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
       "}\n",
       "\n",
       "\n",
       "    function JupyterCommManager() {\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
       "      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        comm_manager.register_target(comm_id, function(comm) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        });\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        });\n",
       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
       "        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
       "          var messages = comm.messages[Symbol.asyncIterator]();\n",
       "          function processIteratorResult(result) {\n",
       "            var message = result.value;\n",
       "            console.log(message)\n",
       "            var content = {data: message.data, comm_id};\n",
       "            var buffers = []\n",
       "            for (var buffer of message.buffers || []) {\n",
       "              buffers.push(new DataView(buffer))\n",
       "            }\n",
       "            var metadata = message.metadata || {};\n",
       "            var msg = {content, buffers, metadata}\n",
       "            msg_handler(msg);\n",
       "            return messages.next().then(processIteratorResult);\n",
       "          }\n",
       "          return messages.next().then(processIteratorResult);\n",
       "        })\n",
       "      }\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
       "      if (comm_id in window.PyViz.comms) {\n",
       "        return window.PyViz.comms[comm_id];\n",
       "      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
       "        if (msg_handler) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        }\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
       "        comm.open();\n",
       "        if (msg_handler) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        }\n",
       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
       "        var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
       "        comm_promise.then((comm) => {\n",
       "          window.PyViz.comms[comm_id] = comm;\n",
       "          if (msg_handler) {\n",
       "            var messages = comm.messages[Symbol.asyncIterator]();\n",
       "            function processIteratorResult(result) {\n",
       "              var message = result.value;\n",
       "              var content = {data: message.data};\n",
       "              var metadata = message.metadata || {comm_id};\n",
       "              var msg = {content, metadata}\n",
       "              msg_handler(msg);\n",
       "              return messages.next().then(processIteratorResult);\n",
       "            }\n",
       "            return messages.next().then(processIteratorResult);\n",
       "          }\n",
       "        }) \n",
       "        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
       "          return comm_promise.then((comm) => {\n",
       "            comm.send(data, metadata, buffers, disposeOnDone);\n",
       "          });\n",
       "        };\n",
       "        var comm = {\n",
       "          send: sendClosure\n",
       "        };\n",
       "      }\n",
       "      window.PyViz.comms[comm_id] = comm;\n",
       "      return comm;\n",
       "    }\n",
       "    window.PyViz.comm_manager = new JupyterCommManager();\n",
       "    \n",
       "\n",
       "\n",
       "var JS_MIME_TYPE = 'application/javascript';\n",
       "var HTML_MIME_TYPE = 'text/html';\n",
       "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
       "var CLASS_NAME = 'output';\n",
       "\n",
       "/**\n",
       " * Render data to the DOM node\n",
       " */\n",
       "function render(props, node) {\n",
       "  var div = document.createElement(\"div\");\n",
       "  var script = document.createElement(\"script\");\n",
       "  node.appendChild(div);\n",
       "  node.appendChild(script);\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when a new output is added\n",
       " */\n",
       "function handle_add_output(event, handle) {\n",
       "  var output_area = handle.output_area;\n",
       "  var output = handle.output;\n",
       "  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
       "    return\n",
       "  }\n",
       "  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
       "  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
       "  if (id !== undefined) {\n",
       "    var nchildren = toinsert.length;\n",
       "    var html_node = toinsert[nchildren-1].children[0];\n",
       "    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "    var scripts = [];\n",
       "    var nodelist = html_node.querySelectorAll(\"script\");\n",
       "    for (var i in nodelist) {\n",
       "      if (nodelist.hasOwnProperty(i)) {\n",
       "        scripts.push(nodelist[i])\n",
       "      }\n",
       "    }\n",
       "\n",
       "    scripts.forEach( function (oldScript) {\n",
       "      var newScript = document.createElement(\"script\");\n",
       "      var attrs = [];\n",
       "      var nodemap = oldScript.attributes;\n",
       "      for (var j in nodemap) {\n",
       "        if (nodemap.hasOwnProperty(j)) {\n",
       "          attrs.push(nodemap[j])\n",
       "        }\n",
       "      }\n",
       "      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
       "      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
       "      oldScript.parentNode.replaceChild(newScript, oldScript);\n",
       "    });\n",
       "    if (JS_MIME_TYPE in output.data) {\n",
       "      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
       "    }\n",
       "    output_area._hv_plot_id = id;\n",
       "    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
       "      window.PyViz.plot_index[id] = Bokeh.index[id];\n",
       "    } else {\n",
       "      window.PyViz.plot_index[id] = null;\n",
       "    }\n",
       "  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
       "    var bk_div = document.createElement(\"div\");\n",
       "    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "    var script_attrs = bk_div.children[0].attributes;\n",
       "    for (var i = 0; i < script_attrs.length; i++) {\n",
       "      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
       "    }\n",
       "    // store reference to server id on output_area\n",
       "    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when an output is cleared or removed\n",
       " */\n",
       "function handle_clear_output(event, handle) {\n",
       "  var id = handle.cell.output_area._hv_plot_id;\n",
       "  var server_id = handle.cell.output_area._bokeh_server_id;\n",
       "  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
       "  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
       "  if (server_id !== null) {\n",
       "    comm.send({event_type: 'server_delete', 'id': server_id});\n",
       "    return;\n",
       "  } else if (comm !== null) {\n",
       "    comm.send({event_type: 'delete', 'id': id});\n",
       "  }\n",
       "  delete PyViz.plot_index[id];\n",
       "  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
       "    var doc = window.Bokeh.index[id].model.document\n",
       "    doc.clear();\n",
       "    const i = window.Bokeh.documents.indexOf(doc);\n",
       "    if (i > -1) {\n",
       "      window.Bokeh.documents.splice(i, 1);\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle kernel restart event\n",
       " */\n",
       "function handle_kernel_cleanup(event, handle) {\n",
       "  delete PyViz.comms[\"hv-extension-comm\"];\n",
       "  window.PyViz.plot_index = {}\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle update_display_data messages\n",
       " */\n",
       "function handle_update_output(event, handle) {\n",
       "  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
       "  handle_add_output(event, handle)\n",
       "}\n",
       "\n",
       "function register_renderer(events, OutputArea) {\n",
       "  function append_mime(data, metadata, element) {\n",
       "    // create a DOM node to render to\n",
       "    var toinsert = this.create_output_subarea(\n",
       "    metadata,\n",
       "    CLASS_NAME,\n",
       "    EXEC_MIME_TYPE\n",
       "    );\n",
       "    this.keyboard_manager.register_events(toinsert);\n",
       "    // Render to node\n",
       "    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
       "    render(props, toinsert[0]);\n",
       "    element.append(toinsert);\n",
       "    return toinsert\n",
       "  }\n",
       "\n",
       "  events.on('output_added.OutputArea', handle_add_output);\n",
       "  events.on('output_updated.OutputArea', handle_update_output);\n",
       "  events.on('clear_output.CodeCell', handle_clear_output);\n",
       "  events.on('delete.Cell', handle_clear_output);\n",
       "  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
       "\n",
       "  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
       "    safe: true,\n",
       "    index: 0\n",
       "  });\n",
       "}\n",
       "\n",
       "if (window.Jupyter !== undefined) {\n",
       "  try {\n",
       "    var events = require('base/js/events');\n",
       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
       "      register_renderer(events, OutputArea);\n",
       "    }\n",
       "  } catch(err) {\n",
       "  }\n",
       "}\n"
      ],
      "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<style>*[data-root-id],\n",
       "*[data-root-id] > * {\n",
       "  box-sizing: border-box;\n",
       "  font-family: var(--jp-ui-font-family);\n",
       "  font-size: var(--jp-ui-font-size1);\n",
       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
       "}\n",
       "\n",
       "/* Override VSCode background color */\n",
       ".cell-output-ipywidget-background:has(\n",
       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
       "  ),\n",
       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
       "  background-color: transparent !important;\n",
       "}\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.holoviews_exec.v0+json": "",
      "text/html": [
       "<div id='p1002'>\n",
       "  <div id=\"c414b443-06e5-4571-9010-9fbd06c9174d\" data-root-id=\"p1002\" style=\"display: contents;\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  var docs_json = {\"714d3589-6519-4153-b29d-f6fe3313001f\":{\"version\":\"3.4.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"p1002\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"p1003\",\"attributes\":{\"plot_id\":\"p1002\",\"comm_id\":\"d340ad92ffa449d6920ff4ee30e35221\",\"client_comm_id\":\"0590ef5d22314910a706a716d0ae0b61\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]}]}};\n",
       "  var render_items = [{\"docid\":\"714d3589-6519-4153-b29d-f6fe3313001f\",\"roots\":{\"p1002\":\"c414b443-06e5-4571-9010-9fbd06c9174d\"},\"root_ids\":[\"p1002\"]}];\n",
       "  var docs = Object.values(docs_json)\n",
       "  if (!docs) {\n",
       "    return\n",
       "  }\n",
       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
       "  async function embed_document(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "    for (const render_item of render_items) {\n",
       "      for (const root_id of render_item.root_ids) {\n",
       "\tconst id_el = document.getElementById(root_id)\n",
       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
       "\t  const root_el = id_el.children[0]\n",
       "\t  root_el.id = root_el.id + '-rendered'\n",
       "\t  for (const child of root_el.children) {\n",
       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  function get_bokeh(root) {\n",
       "    if (root.Bokeh === undefined) {\n",
       "      return null\n",
       "    } else if (root.Bokeh.version !== py_version) {\n",
       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
       "\treturn null\n",
       "      }\n",
       "      return root.Bokeh.versions.get(py_version);\n",
       "    } else if (root.Bokeh.version === py_version) {\n",
       "      return root.Bokeh\n",
       "    }\n",
       "    return null\n",
       "  }\n",
       "  function is_loaded(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
       "  }\n",
       "  if (is_loaded(root)) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (is_loaded(root)) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else if (document.readyState == \"complete\") {\n",
       "        attempts++;\n",
       "        if (attempts > 200) {\n",
       "          clearInterval(timer);\n",
       "\t  var Bokeh = get_bokeh(root)\n",
       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
       "\t  } else {\n",
       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
       "\t    embed_document(root)\n",
       "\t  }\n",
       "        }\n",
       "      }\n",
       "    }, 25, root)\n",
       "  }\n",
       "})(window);</script>"
      ]
     },
     "metadata": {
      "application/vnd.holoviews_exec.v0+json": {
       "id": "p1002"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {},
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.holoviews_exec.v0+json": "",
      "text/html": [
       "<div id='p1004'>\n",
       "  <div id=\"f930b617-2512-4a0a-90a8-3da2ba55e252\" data-root-id=\"p1004\" style=\"display: contents;\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  var docs_json = {\"55dbbe3b-3f2d-41cb-91cb-cce44e6d1fac\":{\"version\":\"3.4.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1004\",\"attributes\":{\"name\":\"Row00972\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1007\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1094\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1005\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1006\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/bundled/theme/native.css\"}}],\"min_width\":700,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1008\",\"attributes\":{\"name\":\"HSpacer00979\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1007\"},{\"id\":\"p1005\"},{\"id\":\"p1006\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1019\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1009\",\"attributes\":{\"tags\":[[[\"timestamp\",null]],[]],\"start\":1723161602500.0,\"end\":1723161903500.0,\"reset_start\":1723161602500.0,\"reset_end\":1723161903500.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1010\",\"attributes\":{\"tags\":[[[\"value\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":61502.83,\"end\":61735.270000000004,\"reset_start\":61502.83,\"reset_end\":61735.270000000004}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1029\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1030\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1022\",\"attributes\":{\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1071\",\"attributes\":{\"name\":\"best_bid\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1062\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1063\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1064\"},\"data\":{\"type\":\"map\",\"entries\":[[\"timestamp\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AECc9kYTeUIAwNr2RhN5QgBAGfdGE3lCAMBX90YTeUIAQJb3RhN5QgDA1PdGE3lCAEAT+EYTeUIAwFH4RhN5QgBAkPhGE3lCAMDO+EYTeUIAQA35RhN5QgDAS/lGE3lCAECK+UYTeUIAwMj5RhN5QgBAB/pGE3lCAMBF+kYTeUIAQIT6RhN5QgDAwvpGE3lCAEAB+0YTeUIAwD/7RhN5QgBAfvtGE3lCAMC8+0YTeUIAQPv7RhN5QgDAOfxGE3lCAEB4/EYTeUIAwLb8RhN5QgBA9fxGE3lCAMAz/UYTeUIAQHL9RhN5QgDAsP1GE3lCAEDv/UYTeUIAwC3+RhN5QgBAbP5GE3lCAMCq/kYTeUIAQOn+RhN5QgDAJ/9GE3lCAEBm/0YTeUIAwKT/RhN5QgBA4/9GE3lCAMAhAEcTeUIAQGAARxN5QgDAngBHE3lCAEDdAEcTeUIAwBsBRxN5QgBAWgFHE3lCAMCYAUcTeUIAQNcBRxN5QgDAFQJHE3lCAEBUAkcTeUIAwJICRxN5QgBA0QJHE3lCAMAPA0cTeUIAQE4DRxN5QgDAjANHE3lCAEDLA0cTeUIAwAkERxN5QgBASARHE3lCAMCGBEcTeUIAQMUERxN5QgDAAwVHE3lCAEBCBUcTeUIAwIAFRxN5QgBAvwVHE3lCAMD9BUcTeUIAQDwGRxN5QgDAegZHE3lCAEC5BkcTeUIAwPcGRxN5QgBANgdHE3lCAMB0B0cTeUIAQLMHRxN5QgDA8QdHE3lCAEAwCEcTeUIAwG4IRxN5QgBArQhHE3lCAMDrCEcTeUIAQCoJRxN5QgDAaAlHE3lCAECnCUcTeUIAwOUJRxN5QgBAJApHE3lCAMBiCkcTeUIAQKEKRxN5QgDA3wpHE3lCAEAeC0cTeUIAwFwLRxN5QgBAmwtHE3lCAMDZC0cTeUIAQBgMRxN5QgDAVgxHE3lCAECVDEcTeUIAwNMMRxN5QgBAEg1HE3lCAMBQDUcTeUIAQI8NRxN5QgDAzQ1HE3lCAEAMDkcTeUIAwEoORxN5QgBAiQ5HE3lCAMDHDkcTeUIAQAYPRxN5QgDARA9HE3lCAECDD0cTeUIAwMEPRxN5QgBAABBHE3lCAMA+EEcTeUIAQH0QRxN5QgDAuxBHE3lCAED6EEcTeUIAwDgRRxN5QgBAdxFHE3lCAMC1EUcTeUIAQPQR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\"},\"shape\":[302],\"dtype\":\"float64\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[302],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\",\"best_bid\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1072\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1073\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1068\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1076\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1069\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1070\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1086\",\"attributes\":{\"name\":\"best_ask\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1077\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1078\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1079\"},\"data\":{\"type\":\"map\",\"entries\":[[\"timestamp\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AECc9kYTeUIAwNr2RhN5QgBAGfdGE3lCAMBX90YTeUIAQJb3RhN5QgDA1PdGE3lCAEAT+EYTeUIAwFH4RhN5QgBAkPhGE3lCAMDO+EYTeUIAQA35RhN5QgDAS/lGE3lCAECK+UYTeUIAwMj5RhN5QgBAB/pGE3lCAMBF+kYTeUIAQIT6RhN5QgDAwvpGE3lCAEAB+0YTeUIAwD/7RhN5QgBAfvtGE3lCAMC8+0YTeUIAQPv7RhN5QgDAOfxGE3lCAEB4/EYTeUIAwLb8RhN5QgBA9fxGE3lCAMAz/UYTeUIAQHL9RhN5QgDAsP1GE3lCAEDv/UYTeUIAwC3+RhN5QgBAbP5GE3lCAMCq/kYTeUIAQOn+RhN5QgDAJ/9GE3lCAEBm/0YTeUIAwKT/RhN5QgBA4/9GE3lCAMAhAEcTeUIAQGAARxN5QgDAngBHE3lCAEDdAEcTeUIAwBsBRxN5QgBAWgFHE3lCAMCYAUcTeUIAQNcBRxN5QgDAFQJHE3lCAEBUAkcTeUIAwJICRxN5QgBA0QJHE3lCAMAPA0cTeUIAQE4DRxN5QgDAjANHE3lCAEDLA0cTeUIAwAkERxN5QgBASARHE3lCAMCGBEcTeUIAQMUERxN5QgDAAwVHE3lCAEBCBUcTeUIAwIAFRxN5QgBAvwVHE3lCAMD9BUcTeUIAQDwGRxN5QgDAegZHE3lCAEC5BkcTeUIAwPcGRxN5QgBANgdHE3lCAMB0B0cTeUIAQLMHRxN5QgDA8QdHE3lCAEAwCEcTeUIAwG4IRxN5QgBArQhHE3lCAMDrCEcTeUIAQCoJRxN5QgDAaAlHE3lCAECnCUcTeUIAwOUJRxN5QgBAJApHE3lCAMBiCkcTeUIAQKEKRxN5QgDA3wpHE3lCAEAeC0cTeUIAwFwLRxN5QgBAmwtHE3lCAMDZC0cTeUIAQBgMRxN5QgDAVgxHE3lCAECVDEcTeUIAwNMMRxN5QgBAEg1HE3lCAMBQDUcTeUIAQI8NRxN5QgDAzQ1HE3lCAEAMDkcTeUIAwEoORxN5QgBAiQ5HE3lCAMDHDkcTeUIAQAYPRxN5QgDARA9HE3lCAECDD0cTeUIAwMEPRxN5QgBAABBHE3lCAMA+EEcTeUIAQH0QRxN5QgDAuxBHE3lCAED6EEcTeUIAwDgRRxN5QgBAdxFHE3lCAMC1EUcTeUIAQPQR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\"},\"shape\":[302],\"dtype\":\"float64\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zczMzHwb7kAAAAAAgBvuQM3MzMzcHO5AAAAAAJAf7kAAAAAAwB/uQAAAAADwH+5AAAAAAMAh7kDNzMzMbCHuQM3MzMx8Iu5AzczMzPwh7kAAAAAAQCLuQGdmZmZGIe5AmpmZmYkh7kCamZmZeSDuQAAAAACgIO5ANDMzM0Mg7kAAAAAAYCHuQM3MzMz8H+5AAAAAADAi7kBnZmZmdiHuQAAAAAAwIu5ANDMzMwMh7kAAAAAA0CDuQGdmZmYWIe5AZ2ZmZhYh7kDNzMzM7B/uQJqZmZm5H+5AmpmZmbkf7kDNzMzMTB7uQM3MzMw8He5ANDMzM0Mc7kA0MzMz4xzuQJqZmZk5He5AmpmZmTkd7kA0MzMzQxzuQAAAAADQHO5ANDMzMwMc7kA0MzMzIxruQDQzMzOjGe5ANDMzMwMZ7kAAAAAA0BjuQDQzMzODGO5AAAAAAEAZ7kAAAAAAQBnuQM3MzMyMGe5AAAAAAJAY7kA0MzMzwxfuQDQzMzPDF+5AZ2ZmZvYX7kA0MzMz4xjuQDQzMzMDGO5AAAAAAEAY7kA0MzMzAxjuQDQzMzODFO5ANDMzM4MU7kA0MzMz4xTuQGdmZmZmFO5AZ2ZmZiYU7kDNzMzMbBPuQGdmZmZGE+5AZ2ZmZkYR7kCamZmZqQ/uQAAAAACAD+5ANDMzM2MO7kDNzMzMXAvuQJqZmZlJCu5AzczMzOwM7kA0MzMzAwvuQM3MzMx8DO5AZ2ZmZoYK7kCamZmZiQruQAAAAAAADO5AAAAAAHAL7kDNzMzMXAzuQAAAAAAgDO5AzczMzFwM7kCamZmZ2QvuQM3MzMxcDO5ANDMzM0MM7kCamZmZqQ3uQAAAAAAQDu5AAAAAABAO7kAAAAAAEA7uQAAAAADAD+5AAAAAANAQ7kA0MzMzcxLuQAAAAAAgE+5AAAAAACAT7kBnZmZmRhPuQAAAAADgE+5ANDMzMyMT7kA0MzMz0xHuQDQzMzPTEe5ANDMzM9MR7kBnZmZmZhLuQGdmZmZmEu5AmpmZmZkS7kCamZmZWRLuQDQzMzPDEe5ANDMzM4MQ7kAAAAAAcBLuQAAAAABAEe5ANDMzM8MR7kA0MzMzgxDuQDQzMzPDEO5ANDMzM8MQ7kA0MzMzAxHuQDQzMzMzEe5AAAAAAMAR7kBnZmZmtg/uQGdmZmYmD+5AAAAAAFAQ7kAAAAAAkBDuQGdmZma2D+5AAAAAAEAP7kA0MzMzow7uQAAAAABAD+5ANDMzMwMQ7kA0MzMzExHuQDQzMzMTEe5AAAAAAMAS7kAAAAAAQBPuQGdmZmbmFe5AZ2ZmZuYV7kBnZmZm5hXuQDQzMzMjFu5AZ2ZmZkYW7kA0MzMzkxXuQAAAAABAFe5AAAAAAAAV7kAAAAAAIBXuQDQzMzPDFO5AAAAAABAV7kAAAAAAABbuQGdmZmZGFu5ANDMzM7MU7kDNzMzMvBXuQAAAAACAFu5AZ2ZmZpYY7kCamZmZORruQAAAAACwGu5ANDMzM5Mc7kA0MzMzkxzuQAAAAAAwHe5AAAAAAIAd7kDNzMzM7BzuQJqZmZkZG+5ANDMzM4Mb7kA0MzMzwxvuQDQzMzODGu5AAAAAADAd7kBnZmZmFh7uQAAAAAAQHe5AAAAAAIAb7kCamZmZqRvuQJqZmZnJGu5ANDMzM0Ma7kA0MzMzQxruQJqZmZnJGu5AZ2ZmZpYa7kAAAAAAABzuQDQzMzMDG+5ANDMzMwMb7kDNzMzMTBfuQM3MzMy8F+5AzczMzLwX7kA0MzMzIxjuQAAAAACwGe5AAAAAALAZ7kCamZmZORruQM3MzMwcGe5ANDMzM0MZ7kDNzMzMvBfuQJqZmZm5F+5AmpmZmWkY7kCamZmZWRbuQJqZmZn5Fe5AZ2ZmZmYU7kCamZmZORXuQGdmZma2F+5AZ2ZmZkYY7kAAAAAAABjuQDQzMzMzF+5ANDMzMyMW7kA0MzMzgxbuQDQzMzODFu5ANDMzM4MW7kA0MzMzIxbuQGdmZmYGFu5AZ2ZmZgYW7kA0MzMzQxbuQDQzMzNDGe5AAAAAAEAa7kAAAAAAUBzuQDQzMzNDG+5AAAAAABAa7kA0MzMzQxnuQM3MzMzcGO5AAAAAAAAY7kA0MzMz4xbuQGdmZmZWF+5ANDMzMyMX7kA0MzMzgxXuQDQzMzNDFu5AZ2ZmZgYW7kBnZmZmBhbuQAAAAABQFO5ANDMzMwMT7kCamZmZiRHuQJqZmZmJEe5AmpmZmUkS7kAAAAAAUBPuQM3MzMzcFO5AzczMzMwX7kA0MzMzwxjuQJqZmZlJF+5AmpmZmUkX7kBnZmZmthXuQGdmZmYGFe5AZ2ZmZhYX7kBnZmZmFhfuQGdmZmYWF+5AZ2ZmZhYX7kA0MzMz0xbuQDQzMzPTFu5AZ2ZmZrYW7kAAAAAAABbuQDQzMzOzFu5ANDMzM7MW7kA0MzMzwxXuQDQzMzNzFe5ANDMzM4MW7kA0MzMz0xbuQDQzMzOzFu5AzczMzMwX7kCamZmZuRXuQJqZmZm5Fe5ANDMzM6MU7kA0MzMzAxbuQDQzMzOzFu5AAAAAAEAY7kA0MzMzwxjuQAAAAABgGO5AAAAAAGAY7kA0MzMzwxjuQAAAAABgGO5ANDMzM0MX7kAAAAAAwBfuQAAAAADAF+5AmpmZmQkY7kAAAAAAgBjuQAAAAACAGO5ANDMzM8MY7kCamZmZiRjuQDQzMzPDGO5ANDMzM4MY7kAAAAAAMBnuQAAAAAAwGe5AmpmZmWkZ7kCamZmZKRvuQAAAAADwHO5ANDMzM4Mc7kBnZmZmphzuQJqZmZlZHO5ANDMzMyMc7kBnZmZmJhvuQGdmZmYmG+5AZ2ZmZiYb7kBnZmZmJhvuQJqZmZlZHO5ANDMzM3Ma7kA0MzMzwxjuQM3MzMxMGO5AzczMzNwY7kBnZmZmxhjuQGdmZma2Fu5AZ2ZmZnYV7kAAAAAA4BXuQGdmZmbGFe5AZ2ZmZsYV7kBnZmZmxhXuQGdmZmYGFu5AAAAAAAAX7kAAAAAAgBfuQAAAAACwFu5AAAAAAJAW7kA0MzMzMxbuQAAAAAAwFe5AAAAAADAV7kAAAAAAwBTuQAAAAADAFO5ANDMzM5MT7kBnZmZmdhPuQJqZmZmZEe5ANDMzM+MQ7kA0MzMzIxLuQJqZmZlJEe5AmpmZmUkR7kAAAAAAABLuQAAAAAAAEu5AAAAAAAAS7kA0MzMzIxLuQA==\"},\"shape\":[302],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\",\"best_ask\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1087\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1088\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1083\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1090\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1084\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1085\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"timestamp\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1028\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1014\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":\"auto\",\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1015\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p1071\"},{\"id\":\"p1086\"}],\"tooltips\":[[\"Variable\",\"@{Variable}\"],[\"timestamp\",\"@{timestamp}{%F %T}\"],[\"value\",\"@{value}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{timestamp}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1053\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1054\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1055\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1056\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1061\"}],\"active_drag\":{\"id\":\"p1054\"},\"active_scroll\":{\"id\":\"p1014\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1048\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1049\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1050\"},\"axis_label\":\"\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1051\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1074\",\"attributes\":{\"location\":[0,0],\"title\":\"Variable\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1075\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"best_bid\"},\"renderers\":[{\"id\":\"p1071\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1089\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"best_ask\"},\"renderers\":[{\"id\":\"p1086\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p1031\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p1032\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1033\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1034\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1035\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1036\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1037\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1038\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1039\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1040\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1041\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1042\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1043\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p1044\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1045\"},\"axis_label\":\"timestamp\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1046\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1047\",\"attributes\":{\"axis\":{\"id\":\"p1031\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1052\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1048\"},\"grid_line_color\":null}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1092\",\"attributes\":{\"name\":\"HSpacer00980\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1007\"},{\"id\":\"p1005\"},{\"id\":\"p1006\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]}]}};\n",
       "  var render_items = [{\"docid\":\"55dbbe3b-3f2d-41cb-91cb-cce44e6d1fac\",\"roots\":{\"p1004\":\"f930b617-2512-4a0a-90a8-3da2ba55e252\"},\"root_ids\":[\"p1004\"]}];\n",
       "  var docs = Object.values(docs_json)\n",
       "  if (!docs) {\n",
       "    return\n",
       "  }\n",
       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
       "  async function embed_document(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "    for (const render_item of render_items) {\n",
       "      for (const root_id of render_item.root_ids) {\n",
       "\tconst id_el = document.getElementById(root_id)\n",
       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
       "\t  const root_el = id_el.children[0]\n",
       "\t  root_el.id = root_el.id + '-rendered'\n",
       "\t  for (const child of root_el.children) {\n",
       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  function get_bokeh(root) {\n",
       "    if (root.Bokeh === undefined) {\n",
       "      return null\n",
       "    } else if (root.Bokeh.version !== py_version) {\n",
       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
       "\treturn null\n",
       "      }\n",
       "      return root.Bokeh.versions.get(py_version);\n",
       "    } else if (root.Bokeh.version === py_version) {\n",
       "      return root.Bokeh\n",
       "    }\n",
       "    return null\n",
       "  }\n",
       "  function is_loaded(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
       "  }\n",
       "  if (is_loaded(root)) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (is_loaded(root)) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else if (document.readyState == \"complete\") {\n",
       "        attempts++;\n",
       "        if (attempts > 200) {\n",
       "          clearInterval(timer);\n",
       "\t  var Bokeh = get_bokeh(root)\n",
       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
       "\t  } else {\n",
       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
       "\t    embed_document(root)\n",
       "\t  }\n",
       "        }\n",
       "      }\n",
       "    }, 25, root)\n",
       "  }\n",
       "})(window);</script>"
      ],
      "text/plain": [
       ":NdOverlay   [Variable]\n",
       "   :Curve   [timestamp]   (value)"
      ]
     },
     "execution_count": 26,
     "metadata": {
      "application/vnd.holoviews_exec.v0+json": {
       "id": "p1004"
      }
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Uses Numba list for njit.\n",
    "from numba.typed import List\n",
    "from numba import int64, float64\n",
    "\n",
    "import polars as pl\n",
    "\n",
    "local_timestamp = List.empty_list(int64, allocated=10000)\n",
    "best_bid = List.empty_list(float64, allocated=10000)\n",
    "best_ask = List.empty_list(float64, allocated=10000)\n",
    "\n",
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "plot_bbo(hbt, local_timestamp, best_bid, best_ask)\n",
    "\n",
    "hbt.close()\n",
    "\n",
    "df = pl.DataFrame({'timestamp': local_timestamp, 'best_bid': best_bid, 'best_ask': best_ask})\n",
    "df = df.with_columns(\n",
    "    pl.from_epoch('timestamp', time_unit='ns')\n",
    ")\n",
    "\n",
    "df.plot(x='timestamp')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1069fc95",
   "metadata": {},
   "source": [
    "## Printing stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e001470d",
   "metadata": {},
   "outputs": [],
   "source": [
    "@njit\n",
    "def submit_order_stats(hbt, recorder):\n",
    "    buy_order_id = 1\n",
    "    sell_order_id = 2\n",
    "    half_spread = 5 * hbt.depth(0).tick_size\n",
    "    \n",
    "    while hbt.elapse(1 * 1e9) == 0:\n",
    "        hbt.clear_inactive_orders(0)\n",
    "\n",
    "        depth = hbt.depth(0)\n",
    "        \n",
    "        mid_price = (depth.best_bid + depth.best_ask) / 2.0\n",
    "        \n",
    "        if buy_order_id not in hbt.orders(0):\n",
    "            order_price = round((mid_price - half_spread) / depth.tick_size) * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTX\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_buy_order(0, buy_order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "        else:\n",
    "            hbt.cancel(0, buy_order_id, False)\n",
    "            \n",
    "        if sell_order_id not in hbt.orders(0):\n",
    "            order_price = round((mid_price + half_spread) / depth.tick_size) * depth.tick_size\n",
    "            order_qty = 1\n",
    "            time_in_force = GTX\n",
    "            order_type = LIMIT\n",
    "            hbt.submit_sell_order(0, sell_order_id, order_price, order_qty, time_in_force, order_type, False)\n",
    "        else:\n",
    "            hbt.cancel(0, sell_order_id, False)\n",
    "            \n",
    "        recorder.record(hbt)\n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "a3795e40",
   "metadata": {},
   "outputs": [],
   "source": [
    "from hftbacktest import Recorder\n",
    "\n",
    "hbt = HashMapMarketDepthBacktest([asset])\n",
    "\n",
    "recorder = Recorder(\n",
    "    # The number of assets\n",
    "    hbt.num_assets,\n",
    "    # The buffer size for records\n",
    "    1000000\n",
    ")\n",
    "\n",
    "submit_order_stats(hbt, recorder.recorder)\n",
    "\n",
    "_ = hbt.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "083d1d1b-daa1-43cf-8ac8-615e2265ffa6",
   "metadata": {},
   "source": [
    "You can get recorded states using the `get` method with the asset number."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1fa63ae5-6535-48da-a728-52e0be2c8f52",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([(1723161602500000000, 61659.85,  0.,  0.000000e+00,    0.     ,   0,   0.,        0. ),\n",
       "       (1723161603500000000, 61659.95,  1., -6.165940e+04,   12.33188,   1,   1.,    61659.4),\n",
       "       (1723161604500000000, 61670.85,  1., -6.165940e+04,   12.33188,   1,   1.,    61659.4),\n",
       "       (1723161605500000000, 61692.45,  0.,  1.200000e+01,   24.66616,   2,   2.,   123330.8),\n",
       "       (1723161606500000000, 61693.95,  0.,  1.300000e+01,   49.34312,   4,   4.,   246715.6),\n",
       "       (1723161607500000000, 61695.45, -1.,  6.170740e+04,   61.682  ,   5,   5.,   308410. ),\n",
       "       (1723161608500000000, 61709.95, -2.,  1.234033e+05,   74.02118,   6,   6.,   370105.9),\n",
       "       (1723161609500000000, 61707.35, -1.,  6.169390e+04,   86.36306,   7,   7.,   431815.3),\n",
       "       (1723161610500000000, 61715.85, -1.,  6.169390e+04,   86.36306,   7,   7.,   431815.3),\n",
       "       (1723161611500000000, 61711.85, -2.,  1.234103e+05,   98.70634,   8,   8.,   493531.7),\n",
       "       (1723161612500000000, 61713.95, -3.,  1.851227e+05,  111.04882,   9,   9.,   555244.1),\n",
       "       (1723161613500000000, 61706.15, -4.,  2.468371e+05,  123.3917 ,  10,  10.,   616958.5),\n",
       "       (1723161614500000000, 61708.25, -5.,  3.085437e+05,  135.73302,  11,  11.,   678665.1),\n",
       "       (1723161615500000000, 61699.75, -6.,  3.702525e+05,  148.07478,  12,  12.,   740373.9),\n",
       "       (1723161616500000000, 61700.95, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161617500000000, 61698.05, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161618500000000, 61706.95, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161619500000000, 61695.85, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161620500000000, 61713.45, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161621500000000, 61707.65, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161622500000000, 61713.45, -7.,  4.319527e+05,  160.41482,  13,  13.,   802074.1),\n",
       "       (1723161623500000000, 61704.05, -6.,  3.702455e+05,  172.75626,  14,  14.,   863781.3),\n",
       "       (1723161624500000000, 61702.45, -5.,  3.085419e+05,  185.09698,  15,  15.,   925484.9),\n",
       "       (1723161625500000000, 61704.65, -6.,  3.702448e+05,  197.43756,  16,  16.,   987187.8),\n",
       "       (1723161626500000000, 61704.65, -6.,  3.702448e+05,  197.43756,  16,  16.,   987187.8),\n",
       "       (1723161627500000000, 61695.35, -5.,  3.085406e+05,  209.7784 ,  17,  17.,  1048892. ),\n",
       "       (1723161628500000000, 61693.75, -4.,  2.468458e+05,  222.11736,  18,  18.,  1110586.8),\n",
       "       (1723161629500000000, 61693.75, -4.,  2.468458e+05,  222.11736,  18,  18.,  1110586.8),\n",
       "       (1723161630500000000, 61682.35, -4.,  2.468458e+05,  222.11736,  18,  18.,  1110586.8),\n",
       "       (1723161631500000000, 61673.85, -3.,  1.851640e+05,  234.45372,  19,  19.,  1172268.6),\n",
       "       (1723161632500000000, 61666.05, -2.,  1.234906e+05,  246.7884 ,  20,  20.,  1233942. ),\n",
       "       (1723161633500000000, 61671.05, -2.,  1.234906e+05,  246.7884 ,  20,  20.,  1233942. ),\n",
       "       (1723161634500000000, 61673.75, -3.,  1.851622e+05,  259.12272,  21,  21.,  1295613.6),\n",
       "       (1723161635500000000, 61673.75, -3.,  1.851622e+05,  259.12272,  21,  21.,  1295613.6),\n",
       "       (1723161636500000000, 61666.05, -3.,  1.851622e+05,  259.12272,  21,  21.,  1295613.6),\n",
       "       (1723161637500000000, 61670.45, -4.,  2.468288e+05,  271.45604,  22,  22.,  1357280.2),\n",
       "       (1723161638500000000, 61664.05, -4.,  2.468288e+05,  271.45604,  22,  22.,  1357280.2),\n",
       "       (1723161639500000000, 61649.05, -3.,  1.851652e+05,  283.78876,  23,  23.,  1418943.8),\n",
       "       (1723161640500000000, 61645.05, -3.,  1.851652e+05,  283.78876,  23,  23.,  1418943.8),\n",
       "       (1723161641500000000, 61640.05, -2.,  1.235206e+05,  296.11768,  24,  24.,  1480588.4),\n",
       "       (1723161642500000000, 61638.45, -1.,  6.188100e+04,  308.4456 ,  25,  25.,  1542228. ),\n",
       "       (1723161643500000000, 61636.05,  0.,  2.431000e+02,  320.77318,  26,  26.,  1603865.9),\n",
       "       (1723161644500000000, 61641.95, -1.,  6.187970e+04,  333.1005 ,  27,  27.,  1665502.5),\n",
       "       (1723161645500000000, 61641.95, -1.,  6.187970e+04,  333.1005 ,  27,  27.,  1665502.5),\n",
       "       (1723161646500000000, 61644.35, -1.,  6.187970e+04,  333.1005 ,  27,  27.,  1665502.5),\n",
       "       (1723161647500000000, 61636.45, -1.,  6.187970e+04,  333.1005 ,  27,  27.,  1665502.5),\n",
       "       (1723161648500000000, 61630.05,  0.,  2.438000e+02,  345.42768,  28,  28.,  1727138.4),\n",
       "       (1723161649500000000, 61630.05,  0.,  2.438000e+02,  345.42768,  28,  28.,  1727138.4),\n",
       "       (1723161650500000000, 61631.65,  0.,  2.438000e+02,  345.42768,  28,  28.,  1727138.4),\n",
       "       (1723161651500000000, 61639.05, -1.,  6.187600e+04,  357.75412,  29,  29.,  1788770.6),\n",
       "       (1723161652500000000, 61632.05, -1.,  6.187600e+04,  357.75412,  29,  29.,  1788770.6),\n",
       "       (1723161653500000000, 61633.95, -1.,  6.187600e+04,  357.75412,  29,  29.,  1788770.6),\n",
       "       (1723161654500000000, 61632.05, -2.,  1.235104e+05,  370.081  ,  30,  30.,  1850405. ),\n",
       "       (1723161655500000000, 61604.05, -1.,  6.187880e+04,  382.40732,  31,  31.,  1912036.6),\n",
       "       (1723161656500000000, 61604.05, -1.,  6.187880e+04,  382.40732,  31,  31.,  1912036.6),\n",
       "       (1723161657500000000, 61607.05, -1.,  6.187880e+04,  382.40732,  31,  31.,  1912036.6),\n",
       "       (1723161658500000000, 61603.15,  0.,  2.722000e+02,  394.72864,  32,  32.,  1973643.2),\n",
       "       (1723161659500000000, 61601.15,  1., -6.133040e+04,  407.04916,  33,  33.,  2035245.8),\n",
       "       (1723161660500000000, 61595.35,  2., -1.229310e+05,  419.36928,  34,  34.,  2096846.4),\n",
       "       (1723161661500000000, 61594.15,  3., -1.845258e+05,  431.68824,  35,  35.,  2158441.2),\n",
       "       (1723161662500000000, 61578.15,  4., -2.461194e+05,  444.00696,  36,  36.,  2220034.8),\n",
       "       (1723161663500000000, 61565.25,  5., -3.076970e+05,  456.32248,  37,  37.,  2281612.4),\n",
       "       (1723161664500000000, 61563.65,  5., -3.076960e+05,  480.9486 ,  39,  39.,  2404743. ),\n",
       "       (1723161665500000000, 61555.05,  6., -3.692592e+05,  493.26124,  40,  40.,  2466306.2),\n",
       "       (1723161666500000000, 61530.85,  7., -4.308138e+05,  505.57216,  41,  41.,  2527860.8),\n",
       "       (1723161667500000000, 61522.25,  8., -4.923442e+05,  517.87824,  42,  42.,  2589391.2),\n",
       "       (1723161668500000000, 61543.  ,  7., -4.308214e+05,  530.1828 ,  43,  43.,  2650914. ),\n",
       "       (1723161669500000000, 61528.05,  7., -4.308214e+05,  530.1828 ,  43,  43.,  2650914. ),\n",
       "       (1723161670500000000, 61539.85,  8., -4.923490e+05,  542.48832,  44,  44.,  2712441.6),\n",
       "       (1723161671500000000, 61524.15,  9., -5.538884e+05,  554.7962 ,  45,  45.,  2773981. ),\n",
       "       (1723161672500000000, 61524.25,  9., -5.538884e+05,  554.7962 ,  45,  45.,  2773981. ),\n",
       "       (1723161673500000000, 61535.95,  8., -4.923636e+05,  567.10116,  46,  46.,  2835505.8),\n",
       "       (1723161674500000000, 61531.45,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161675500000000, 61538.85,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161676500000000, 61536.95,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161677500000000, 61538.85,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161678500000000, 61534.75,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161679500000000, 61538.85,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161680500000000, 61538.05,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161681500000000, 61549.25,  9., -5.538990e+05,  579.40824,  47,  47.,  2897041.2),\n",
       "       (1723161682500000000, 61552.45,  8., -4.923492e+05,  591.7182 ,  48,  48.,  2958591. ),\n",
       "       (1723161683500000000, 61552.45,  8., -4.923492e+05,  591.7182 ,  48,  48.,  2958591. ),\n",
       "       (1723161684500000000, 61552.45,  8., -4.923492e+05,  591.7182 ,  48,  48.,  2958591. ),\n",
       "       (1723161685500000000, 61565.95,  7., -4.307963e+05,  604.02878,  49,  49.,  3020143.9),\n",
       "       (1723161686500000000, 61574.45,  6., -3.692299e+05,  616.34206,  50,  50.,  3081710.3),\n",
       "       (1723161687500000000, 61587.55,  6., -3.692299e+05,  616.34206,  50,  50.,  3081710.3),\n",
       "       (1723161688500000000, 61592.95,  5., -3.076419e+05,  628.65966,  51,  51.,  3143298.3),\n",
       "       (1723161689500000000, 61592.95,  5., -3.076419e+05,  628.65966,  51,  51.,  3143298.3),\n",
       "       (1723161690500000000, 61594.15,  5., -3.076419e+05,  628.65966,  51,  51.,  3143298.3),\n",
       "       (1723161691500000000, 61598.95,  4., -2.460473e+05,  640.97858,  52,  52.,  3204892.9),\n",
       "       (1723161692500000000, 61593.05,  3., -1.844479e+05,  653.29846,  53,  53.,  3266492.3),\n",
       "       (1723161693500000000, 61582.55,  3., -1.844479e+05,  653.29846,  53,  53.,  3266492.3),\n",
       "       (1723161694500000000, 61582.55,  4., -2.460299e+05,  665.61486,  54,  54.,  3328074.3),\n",
       "       (1723161695500000000, 61582.55,  4., -2.460299e+05,  665.61486,  54,  54.,  3328074.3),\n",
       "       (1723161696500000000, 61587.15,  4., -2.460299e+05,  665.61486,  54,  54.,  3328074.3),\n",
       "       (1723161697500000000, 61587.15,  4., -2.460299e+05,  665.61486,  54,  54.,  3328074.3),\n",
       "       (1723161698500000000, 61588.75,  4., -2.460299e+05,  665.61486,  54,  54.,  3328074.3),\n",
       "       (1723161699500000000, 61586.75,  4., -2.460289e+05,  690.25034,  56,  56.,  3451251.7),\n",
       "       (1723161700500000000, 61582.05,  5., -3.076151e+05,  702.56758,  57,  57.,  3512837.9),\n",
       "       (1723161701500000000, 61572.05,  6., -3.691967e+05,  714.8839 ,  58,  58.,  3574419.5),\n",
       "       (1723161702500000000, 61587.45,  5., -3.076241e+05,  727.19842,  59,  59.,  3635992.1),\n",
       "       (1723161703500000000, 61577.95,  5., -3.076241e+05,  727.19842,  59,  59.,  3635992.1),\n",
       "       (1723161704500000000, 61582.05,  5., -3.076241e+05,  727.19842,  59,  59.,  3635992.1),\n",
       "       (1723161705500000000, 61572.05,  5., -3.076189e+05,  751.83042,  61,  61.,  3759152.1),\n",
       "       (1723161706500000000, 61574.05,  4., -2.460463e+05,  764.14494,  62,  62.,  3820724.7),\n",
       "       (1723161707500000000, 61574.05,  4., -2.460463e+05,  764.14494,  62,  62.,  3820724.7),\n",
       "       (1723161708500000000, 61576.05,  3., -1.844717e+05,  776.45986,  63,  63.,  3882299.3),\n",
       "       (1723161709500000000, 61577.55,  2., -1.228951e+05,  788.77518,  64,  64.,  3943875.9),\n",
       "       (1723161710500000000, 61581.95,  1., -6.131710e+04,  801.09078,  65,  65.,  4005453.9),\n",
       "       (1723161711500000000, 61565.65,  1., -6.131710e+04,  801.09078,  65,  65.,  4005453.9),\n",
       "       (1723161712500000000, 61561.15,  2., -1.228823e+05,  813.40382,  66,  66.,  4067019.1),\n",
       "       (1723161713500000000, 61570.45,  2., -1.228813e+05,  838.02826,  68,  68.,  4190141.3),\n",
       "       (1723161714500000000, 61572.45,  1., -6.131040e+04,  850.34244,  69,  69.,  4251712.2),\n",
       "       (1723161715500000000, 61565.65,  1., -6.131040e+04,  850.34244,  69,  69.,  4251712.2),\n",
       "       (1723161716500000000, 61561.95,  2., -1.228756e+05,  862.65548,  70,  70.,  4313277.4),\n",
       "       (1723161717500000000, 61557.05,  3., -1.844370e+05,  874.96776,  71,  71.,  4374838.8),\n",
       "       (1723161718500000000, 61561.95,  3., -1.844370e+05,  874.96776,  71,  71.,  4374838.8),\n",
       "       (1723161719500000000, 61568.05,  2., -1.228746e+05,  887.28024,  72,  72.,  4436401.2),\n",
       "       (1723161720500000000, 61576.55,  1., -6.130600e+04,  899.59396,  73,  73.,  4497969.8),\n",
       "       (1723161721500000000, 61576.55,  1., -6.130600e+04,  899.59396,  73,  73.,  4497969.8),\n",
       "       (1723161722500000000, 61589.95,  1., -6.130600e+04,  899.59396,  73,  73.,  4497969.8),\n",
       "       (1723161723500000000, 61593.95,  0.,  2.844000e+02,  911.91204,  74,  74.,  4559560.2),\n",
       "       (1723161724500000000, 61615.15, -1.,  6.187880e+04,  924.23092,  75,  75.,  4621154.6),\n",
       "       (1723161725500000000, 61615.15, -1.,  6.187880e+04,  924.23092,  75,  75.,  4621154.6),\n",
       "       (1723161726500000000, 61615.15, -1.,  6.187880e+04,  924.23092,  75,  75.,  4621154.6),\n",
       "       (1723161727500000000, 61617.05, -2.,  1.234944e+05,  936.55404,  76,  76.,  4682770.2),\n",
       "       (1723161728500000000, 61618.15, -3.,  1.851120e+05,  948.87756,  77,  77.,  4744387.8),\n",
       "       (1723161729500000000, 61612.55, -3.,  1.851120e+05,  948.87756,  77,  77.,  4744387.8),\n",
       "       (1723161730500000000, 61609.95, -2.,  1.235000e+05,  961.19996,  78,  78.,  4805999.8),\n",
       "       (1723161731500000000, 61607.95, -1.,  6.189060e+04,  973.52184,  79,  79.,  4867609.2),\n",
       "       (1723161732500000000, 61608.95, -1.,  6.189060e+04,  973.52184,  79,  79.,  4867609.2),\n",
       "       (1723161733500000000, 61606.05, -1.,  6.189060e+04,  973.52184,  79,  79.,  4867609.2),\n",
       "       (1723161734500000000, 61608.45, -1.,  6.189060e+04,  973.52184,  79,  79.,  4867609.2),\n",
       "       (1723161735500000000, 61615.95, -2.,  1.234995e+05,  985.84362,  80,  80.,  4929218.1),\n",
       "       (1723161736500000000, 61618.15, -3.,  1.851159e+05,  998.1669 ,  81,  81.,  4990834.5),\n",
       "       (1723161737500000000, 61605.55, -3.,  1.851159e+05,  998.1669 ,  81,  81.,  4990834.5),\n",
       "       (1723161738500000000, 61613.85, -3.,  1.851159e+05,  998.1669 ,  81,  81.,  4990834.5),\n",
       "       (1723161739500000000, 61619.95, -4.,  2.467303e+05, 1010.48978,  82,  82.,  5052448.9),\n",
       "       (1723161740500000000, 61636.65, -4.,  2.467303e+05, 1010.48978,  82,  82.,  5052448.9),\n",
       "       (1723161741500000000, 61649.75, -5.,  3.083675e+05, 1022.81722,  83,  83.,  5114086.1),\n",
       "       (1723161742500000000, 61653.45, -6.,  3.700177e+05, 1035.14726,  84,  84.,  5175736.3),\n",
       "       (1723161743500000000, 61668.55, -7.,  4.316716e+05, 1047.47804,  85,  85.,  5237390.2),\n",
       "       (1723161744500000000, 61668.55, -7.,  4.316716e+05, 1047.47804,  85,  85.,  5237390.2),\n",
       "       (1723161745500000000, 61673.45, -6.,  3.700036e+05, 1059.81164,  86,  86.,  5299058.2),\n",
       "       (1723161746500000000, 61675.55, -7.,  4.316775e+05, 1072.14642,  87,  87.,  5360732.1),\n",
       "       (1723161747500000000, 61671.35, -8.,  4.933535e+05, 1084.48162,  88,  88.,  5422408.1),\n",
       "       (1723161748500000000, 61656.75, -7.,  4.316827e+05, 1096.81578,  89,  89.,  5484078.9),\n",
       "       (1723161749500000000, 61660.05, -7.,  4.316827e+05, 1096.81578,  89,  89.,  5484078.9),\n",
       "       (1723161750500000000, 61662.05, -8.,  4.933433e+05, 1109.1479 ,  90,  90.,  5545739.5),\n",
       "       (1723161751500000000, 61652.05, -7.,  4.316817e+05, 1121.48022,  91,  91.,  5607401.1),\n",
       "       (1723161752500000000, 61673.45, -7.,  4.316817e+05, 1121.48022,  91,  91.,  5607401.1),\n",
       "       (1723161753500000000, 61680.65, -8.,  4.933556e+05, 1133.815  ,  92,  92.,  5669075. ),\n",
       "       (1723161754500000000, 61672.45, -7.,  4.316754e+05, 1146.15104,  93,  93.,  5730755.2),\n",
       "       (1723161755500000000, 61659.95, -6.,  3.700035e+05, 1158.48542,  94,  94.,  5792427.1),\n",
       "       (1723161756500000000, 61661.25, -7.,  4.316639e+05, 1170.8175 ,  95,  95.,  5854087.5),\n",
       "       (1723161757500000000, 61654.25, -7.,  4.316639e+05, 1170.8175 ,  95,  95.,  5854087.5),\n",
       "       (1723161758500000000, 61650.05, -6.,  3.700101e+05, 1183.14826,  96,  96.,  5915741.3),\n",
       "       (1723161759500000000, 61650.05, -6.,  3.700101e+05, 1183.14826,  96,  96.,  5915741.3),\n",
       "       (1723161760500000000, 61654.25, -6.,  3.700101e+05, 1183.14826,  96,  96.,  5915741.3),\n",
       "       (1723161761500000000, 61652.65, -5.,  3.083563e+05, 1195.47902,  97,  97.,  5977395.1),\n",
       "       (1723161762500000000, 61663.95, -5.,  3.083563e+05, 1195.47902,  97,  97.,  5977395.1),\n",
       "       (1723161763500000000, 61656.05, -5.,  3.083563e+05, 1195.47902,  97,  97.,  5977395.1),\n",
       "       (1723161764500000000, 61656.05, -6.,  3.700129e+05, 1207.81034,  98,  98.,  6039051.7),\n",
       "       (1723161765500000000, 61626.35, -6.,  3.700129e+05, 1207.81034,  98,  98.,  6039051.7),\n",
       "       (1723161766500000000, 61629.85, -6.,  3.700129e+05, 1207.81034,  98,  98.,  6039051.7),\n",
       "       (1723161767500000000, 61629.85, -6.,  3.700129e+05, 1207.81034,  98,  98.,  6039051.7),\n",
       "       (1723161768500000000, 61633.05, -6.,  3.700129e+05, 1207.81034,  98,  98.,  6039051.7),\n",
       "       (1723161769500000000, 61645.45, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161770500000000, 61645.45, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161771500000000, 61649.75, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161772500000000, 61640.85, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161773500000000, 61642.05, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161774500000000, 61629.85, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161775500000000, 61629.75, -7.,  4.316465e+05, 1220.13706,  99,  99.,  6100685.3),\n",
       "       (1723161776500000000, 61635.25, -8.,  4.932767e+05, 1232.4631 , 100, 100.,  6162315.5),\n",
       "       (1723161777500000000, 61618.75, -7.,  4.316419e+05, 1244.79006, 101, 101.,  6223950.3),\n",
       "       (1723161778500000000, 61615.75, -6.,  3.700237e+05, 1257.1137 , 102, 102.,  6285568.5),\n",
       "       (1723161779500000000, 61602.7 , -5.,  3.084085e+05, 1269.43674, 103, 103.,  6347183.7),\n",
       "       (1723161780500000000, 61609.75, -4.,  2.468063e+05, 1281.75718, 104, 104.,  6408785.9),\n",
       "       (1723161781500000000, 61629.65, -5.,  3.084165e+05, 1294.07922, 105, 105.,  6470396.1),\n",
       "       (1723161782500000000, 61634.15, -6.,  3.700467e+05, 1306.40526, 106, 106.,  6532026.3),\n",
       "       (1723161783500000000, 61631.95, -5.,  3.084131e+05, 1318.73198, 107, 107.,  6593659.9),\n",
       "       (1723161784500000000, 61625.55, -4.,  2.467817e+05, 1331.05826, 108, 108.,  6655291.3),\n",
       "       (1723161785500000000, 61617.05, -3.,  1.851567e+05, 1343.38326, 109, 109.,  6716916.3),\n",
       "       (1723161786500000000, 61620.05, -2.,  1.235401e+05, 1355.70658, 110, 110.,  6778532.9),\n",
       "       (1723161787500000000, 61620.05, -2.,  1.235401e+05, 1355.70658, 110, 110.,  6778532.9),\n",
       "       (1723161788500000000, 61620.05, -2.,  1.235401e+05, 1355.70658, 110, 110.,  6778532.9),\n",
       "       (1723161789500000000, 61617.05, -1.,  6.192050e+04, 1368.0305 , 111, 111.,  6840152.5),\n",
       "       (1723161790500000000, 61616.15,  0.,  3.039000e+02, 1380.35382, 112, 112.,  6901769.1),\n",
       "       (1723161791500000000, 61616.15,  0.,  3.039000e+02, 1380.35382, 112, 112.,  6901769.1),\n",
       "       (1723161792500000000, 61618.05,  0.,  3.039000e+02, 1380.35382, 112, 112.,  6901769.1),\n",
       "       (1723161793500000000, 61642.05, -1.,  6.192250e+04, 1392.67754, 113, 113.,  6963387.7),\n",
       "       (1723161794500000000, 61649.95, -2.,  1.235651e+05, 1405.00606, 114, 114.,  7025030.3),\n",
       "       (1723161795500000000, 61666.45, -3.,  1.852155e+05, 1417.33614, 115, 115.,  7086680.7),\n",
       "       (1723161796500000000, 61658.05, -3.,  1.852155e+05, 1417.33614, 115, 115.,  7086680.7),\n",
       "       (1723161797500000000, 61648.45, -2.,  1.235579e+05, 1429.66766, 116, 116.,  7148338.3),\n",
       "       (1723161798500000000, 61642.05, -2.,  1.235589e+05, 1454.32702, 118, 118.,  7271635.1),\n",
       "       (1723161799500000000, 61638.85, -1.,  6.191730e+04, 1466.65534, 119, 119.,  7333276.7),\n",
       "       (1723161800500000000, 61631.95,  0.,  2.789000e+02, 1478.98302, 120, 120.,  7394915.1),\n",
       "       (1723161801500000000, 61623.05,  1., -6.135250e+04, 1491.3093 , 121, 121.,  7456546.5),\n",
       "       (1723161802500000000, 61626.65,  1., -6.135250e+04, 1491.3093 , 121, 121.,  7456546.5),\n",
       "       (1723161803500000000, 61625.05,  1., -6.135250e+04, 1491.3093 , 121, 121.,  7456546.5),\n",
       "       (1723161804500000000, 61612.05,  2., -1.229771e+05, 1503.63422, 122, 122.,  7518171.1),\n",
       "       (1723161805500000000, 61618.05,  1., -6.136450e+04, 1515.95674, 123, 123.,  7579783.7),\n",
       "       (1723161806500000000, 61616.15,  1., -6.136450e+04, 1515.95674, 123, 123.,  7579783.7),\n",
       "       (1723161807500000000, 61616.15,  1., -6.136450e+04, 1515.95674, 123, 123.,  7579783.7),\n",
       "       (1723161808500000000, 61602.45,  1., -6.136450e+04, 1515.95674, 123, 123.,  7579783.7),\n",
       "       (1723161809500000000, 61592.05,  2., -1.229664e+05, 1528.27712, 124, 124.,  7641385.6),\n",
       "       (1723161810500000000, 61580.25,  3., -1.845580e+05, 1540.59544, 125, 125.,  7702977.2),\n",
       "       (1723161811500000000, 61580.25,  3., -1.845580e+05, 1540.59544, 125, 125.,  7702977.2),\n",
       "       (1723161812500000000, 61586.25,  2., -1.229772e+05, 1552.9116 , 126, 126.,  7764558. ),\n",
       "       (1723161813500000000, 61594.45,  1., -6.139040e+04, 1565.22896, 127, 127.,  7826144.8),\n",
       "       (1723161814500000000, 61606.85,  0.,  2.045000e+02, 1577.54794, 128, 128.,  7887739.7),\n",
       "       (1723161815500000000, 61630.35, -1.,  6.181190e+04, 1589.86942, 129, 129.,  7949347.1),\n",
       "       (1723161816500000000, 61638.05, -2.,  1.234427e+05, 1602.19558, 130, 130.,  8010977.9),\n",
       "       (1723161817500000000, 61626.25, -2.,  1.234427e+05, 1602.19558, 130, 130.,  8010977.9),\n",
       "       (1723161818500000000, 61626.25, -2.,  1.234427e+05, 1602.19558, 130, 130.,  8010977.9),\n",
       "       (1723161819500000000, 61613.65, -2.,  1.234427e+05, 1602.19558, 130, 130.,  8010977.9),\n",
       "       (1723161820500000000, 61608.15, -1.,  6.182950e+04, 1614.51822, 131, 131.,  8072591.1),\n",
       "       (1723161821500000000, 61624.65, -2.,  1.234381e+05, 1626.83994, 132, 132.,  8134199.7),\n",
       "       (1723161822500000000, 61624.65, -2.,  1.234381e+05, 1626.83994, 132, 132.,  8134199.7),\n",
       "       (1723161823500000000, 61624.65, -2.,  1.234381e+05, 1626.83994, 132, 132.,  8134199.7),\n",
       "       (1723161824500000000, 61624.65, -2.,  1.234381e+05, 1626.83994, 132, 132.,  8134199.7),\n",
       "       (1723161825500000000, 61622.55, -1.,  6.181390e+04, 1639.16478, 133, 133.,  8195823.9),\n",
       "       (1723161826500000000, 61622.55, -1.,  6.181390e+04, 1639.16478, 133, 133.,  8195823.9),\n",
       "       (1723161827500000000, 61621.65, -1.,  6.181390e+04, 1639.16478, 133, 133.,  8195823.9),\n",
       "       (1723161828500000000, 61615.95,  0.,  1.927000e+02, 1651.48902, 134, 134.,  8257445.1),\n",
       "       (1723161829500000000, 61621.55,  1., -6.142270e+04, 1663.8121 , 135, 135.,  8319060.5),\n",
       "       (1723161830500000000, 61621.55,  1., -6.142270e+04, 1663.8121 , 135, 135.,  8319060.5),\n",
       "       (1723161831500000000, 61614.05,  1., -6.142270e+04, 1663.8121 , 135, 135.,  8319060.5),\n",
       "       (1723161832500000000, 61611.55,  2., -1.230363e+05, 1676.13482, 136, 136.,  8380674.1),\n",
       "       (1723161833500000000, 61620.05,  2., -1.230363e+05, 1676.13482, 136, 136.,  8380674.1),\n",
       "       (1723161834500000000, 61622.55,  1., -6.141570e+04, 1688.45894, 137, 137.,  8442294.7),\n",
       "       (1723161835500000000, 61621.55,  1., -6.141470e+04, 1713.10794, 139, 139.,  8565539.7),\n",
       "       (1723161836500000000, 61630.35,  0.,  2.073000e+02, 1725.43234, 140, 140.,  8627161.7),\n",
       "       (1723161837500000000, 61613.75, -1.,  6.183810e+04, 1737.7585 , 141, 141.,  8688792.5),\n",
       "       (1723161838500000000, 61613.75, -1.,  6.183810e+04, 1737.7585 , 141, 141.,  8688792.5),\n",
       "       (1723161839500000000, 61605.05, -1.,  6.183810e+04, 1737.7585 , 141, 141.,  8688792.5),\n",
       "       (1723161840500000000, 61616.05, -2.,  1.234437e+05, 1750.07962, 142, 142.,  8750398.1),\n",
       "       (1723161841500000000, 61621.55, -3.,  1.850603e+05, 1762.40294, 143, 143.,  8812014.7),\n",
       "       (1723161842500000000, 61633.95, -4.,  2.466823e+05, 1774.72734, 144, 144.,  8873636.7),\n",
       "       (1723161843500000000, 61638.05, -5.,  3.083167e+05, 1787.05422, 145, 145.,  8935271.1),\n",
       "       (1723161844500000000, 61634.95, -4.,  2.466791e+05, 1799.38174, 146, 146.,  8996908.7),\n",
       "       (1723161845500000000, 61634.95, -4.,  2.466791e+05, 1799.38174, 146, 146.,  8996908.7),\n",
       "       (1723161846500000000, 61638.05, -5.,  3.083145e+05, 1811.70882, 147, 147.,  9058544.1),\n",
       "       (1723161847500000000, 61634.95, -5.,  3.083155e+05, 1836.36406, 149, 149.,  9181820.3),\n",
       "       (1723161848500000000, 61626.05, -4.,  2.466811e+05, 1848.69094, 150, 150.,  9243454.7),\n",
       "       (1723161849500000000, 61629.95, -4.,  2.466811e+05, 1848.69094, 150, 150.,  9243454.7),\n",
       "       (1723161850500000000, 61629.95, -4.,  2.466811e+05, 1848.69094, 150, 150.,  9243454.7),\n",
       "       (1723161851500000000, 61632.25, -4.,  2.466811e+05, 1848.69094, 150, 150.,  9243454.7),\n",
       "       (1723161852500000000, 61635.95, -5.,  3.083139e+05, 1861.0175 , 151, 151.,  9305087.5),\n",
       "       (1723161853500000000, 61635.95, -5.,  3.083139e+05, 1861.0175 , 151, 151.,  9305087.5),\n",
       "       (1723161854500000000, 61638.05, -5.,  3.083139e+05, 1861.0175 , 151, 151.,  9305087.5),\n",
       "       (1723161855500000000, 61636.25, -4.,  2.466763e+05, 1873.34502, 152, 152.,  9366725.1),\n",
       "       (1723161856500000000, 61638.05, -4.,  2.466763e+05, 1873.34502, 152, 152.,  9366725.1),\n",
       "       (1723161857500000000, 61636.05, -5.,  3.083149e+05, 1885.67274, 153, 153.,  9428363.7),\n",
       "       (1723161858500000000, 61641.45, -6.,  3.699515e+05, 1898.00006, 154, 154.,  9490000.3),\n",
       "       (1723161859500000000, 61641.45, -6.,  3.699515e+05, 1898.00006, 154, 154.,  9490000.3),\n",
       "       (1723161860500000000, 61643.25, -6.,  3.699515e+05, 1898.00006, 154, 154.,  9490000.3),\n",
       "       (1723161861500000000, 61657.25, -7.,  4.315953e+05, 1910.32882, 155, 155.,  9551644.1),\n",
       "       (1723161862500000000, 61671.45, -8.,  4.932531e+05, 1922.66038, 156, 156.,  9613301.9),\n",
       "       (1723161863500000000, 61668.05, -8.,  4.932531e+05, 1922.66038, 156, 156.,  9613301.9),\n",
       "       (1723161864500000000, 61669.15, -8.,  4.932531e+05, 1922.66038, 156, 156.,  9613301.9),\n",
       "       (1723161865500000000, 61666.75, -8.,  4.932531e+05, 1922.66038, 156, 156.,  9613301.9),\n",
       "       (1723161866500000000, 61665.05, -7.,  4.315869e+05, 1934.99362, 157, 157.,  9674968.1),\n",
       "       (1723161867500000000, 61657.15, -6.,  3.699223e+05, 1947.32654, 158, 158.,  9736632.7),\n",
       "       (1723161868500000000, 61657.15, -6.,  3.699223e+05, 1947.32654, 158, 158.,  9736632.7),\n",
       "       (1723161869500000000, 61657.15, -6.,  3.699223e+05, 1947.32654, 158, 158.,  9736632.7),\n",
       "       (1723161870500000000, 61657.15, -6.,  3.699223e+05, 1947.32654, 158, 158.,  9736632.7),\n",
       "       (1723161871500000000, 61666.75, -7.,  4.315799e+05, 1959.65806, 159, 159.,  9798290.3),\n",
       "       (1723161872500000000, 61651.55, -6.,  3.699137e+05, 1971.9913 , 160, 160.,  9859956.5),\n",
       "       (1723161873500000000, 61638.05, -5.,  3.082627e+05, 1984.3215 , 161, 161.,  9921607.5),\n",
       "       (1723161874500000000, 61634.35, -4.,  2.466251e+05, 1996.64902, 162, 162.,  9983245.1),\n",
       "       (1723161875500000000, 61638.85, -4.,  2.466251e+05, 1996.64902, 162, 162.,  9983245.1),\n",
       "       (1723161876500000000, 61638.15, -5.,  3.082645e+05, 2008.9769 , 163, 163., 10044884.5),\n",
       "       (1723161877500000000, 61621.65, -4.,  2.466269e+05, 2021.30442, 164, 164., 10106522.1),\n",
       "       (1723161878500000000, 61611.65, -3.,  1.850057e+05, 2033.62866, 165, 165., 10168143.3),\n",
       "       (1723161879500000000, 61614.95, -4.,  2.466179e+05, 2045.9511 , 166, 166., 10229755.5),\n",
       "       (1723161880500000000, 61614.15, -4.,  2.466179e+05, 2045.9511 , 166, 166., 10229755.5),\n",
       "       (1723161881500000000, 61614.15, -4.,  2.466179e+05, 2045.9511 , 166, 166., 10229755.5),\n",
       "       (1723161882500000000, 61614.15, -4.,  2.466179e+05, 2045.9511 , 166, 166., 10229755.5),\n",
       "       (1723161883500000000, 61616.15, -4.,  2.466179e+05, 2045.9511 , 166, 166., 10229755.5),\n",
       "       (1723161884500000000, 61623.95, -5.,  3.082345e+05, 2058.27442, 167, 167., 10291372.1),\n",
       "       (1723161885500000000, 61627.95, -6.,  3.698589e+05, 2070.5993 , 168, 168., 10352996.5),\n",
       "       (1723161886500000000, 61621.45, -6.,  3.698589e+05, 2070.5993 , 168, 168., 10352996.5),\n",
       "       (1723161887500000000, 61620.45, -5.,  3.082380e+05, 2082.92348, 169, 169., 10414617.4),\n",
       "       (1723161888500000000, 61617.55, -4.,  2.466181e+05, 2095.24746, 170, 170., 10476237.3),\n",
       "       (1723161889500000000, 61609.45, -3.,  1.850011e+05, 2107.57086, 171, 171., 10537854.3),\n",
       "       (1723161890500000000, 61609.45, -3.,  1.850011e+05, 2107.57086, 171, 171., 10537854.3),\n",
       "       (1723161891500000000, 61605.95, -3.,  1.850011e+05, 2107.57086, 171, 171., 10537854.3),\n",
       "       (1723161892500000000, 61605.95, -3.,  1.850011e+05, 2107.57086, 171, 171., 10537854.3),\n",
       "       (1723161893500000000, 61596.55, -3.,  1.850011e+05, 2107.57086, 171, 171., 10537854.3),\n",
       "       (1723161894500000000, 61595.65, -2.,  1.234051e+05, 2119.89006, 172, 172., 10599450.3),\n",
       "       (1723161895500000000, 61580.75, -1.,  6.180990e+04, 2132.2091 , 173, 173., 10661045.5),\n",
       "       (1723161896500000000, 61575.05,  0.,  2.297000e+02, 2144.52514, 174, 174., 10722625.7),\n",
       "       (1723161897500000000, 61585.05,  0.,  2.297000e+02, 2144.52514, 174, 174., 10722625.7),\n",
       "       (1723161898500000000, 61578.25,  0.,  2.297000e+02, 2144.52514, 174, 174., 10722625.7),\n",
       "       (1723161899500000000, 61578.25,  0.,  2.297000e+02, 2144.52514, 174, 174., 10722625.7),\n",
       "       (1723161900500000000, 61583.95, -1.,  6.180850e+04, 2156.8409 , 175, 175., 10784204.5),\n",
       "       (1723161901500000000, 61583.95, -1.,  6.180850e+04, 2156.8409 , 175, 175., 10784204.5),\n",
       "       (1723161902500000000, 61583.95, -1.,  6.180850e+04, 2156.8409 , 175, 175., 10784204.5),\n",
       "       (1723161903500000000, 61585.05, -2.,  1.233929e+05, 2169.15778, 176, 176., 10845788.9)],\n",
       "      dtype={'names': ['timestamp', 'price', 'position', 'balance', 'fee', 'num_trades', 'trading_volume', 'trading_value'], 'formats': ['<i8', '<f8', '<f8', '<f8', '<f8', '<i8', '<f8', '<f8'], 'offsets': [0, 8, 16, 24, 32, 40, 48, 56], 'itemsize': 64, 'aligned': True})"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recorder.get(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05694c45-4c75-4843-ac5d-58e47151f493",
   "metadata": {},
   "source": [
    "Additionally, the `to_npz` method saves all records into an npz file, with the asset number as the key for the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c6a115a4-f06b-4cd5-aa64-2bdb6d6f3386",
   "metadata": {},
   "outputs": [],
   "source": [
    "recorder.to_npz('example_record.npz')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5714bfcb-2cd3-4659-8d67-574c758090cc",
   "metadata": {},
   "source": [
    "HftBacktest also provides a performance reporting tool based on the records. Please see the details here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "1ec134a5-0e33-48f4-b94e-d6f36c55150b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><style>\n",
       ".dataframe > thead > tr,\n",
       ".dataframe > tbody > tr {\n",
       "  text-align: right;\n",
       "  white-space: pre-wrap;\n",
       "}\n",
       "</style>\n",
       "<small>shape: (1, 11)</small><table border=\"1\" class=\"dataframe\"><thead><tr><th>start</th><th>end</th><th>SR</th><th>Sortino</th><th>Return</th><th>MaxDrawdown</th><th>DailyNumberOfTrades</th><th>DailyTradingValue</th><th>ReturnOverMDD</th><th>ReturnOverTrade</th><th>MaxPositionValue</th></tr><tr><td>datetime[μs]</td><td>datetime[μs]</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td><td>f64</td></tr></thead><tbody><tr><td>2024-08-09 00:00:00</td><td>2024-08-09 00:05:00</td><td>-624.497686</td><td>-664.628958</td><td>-1846.54472</td><td>1902.18778</td><td>50688.0</td><td>3.1236e9</td><td>-0.970748</td><td>-0.00017</td><td>553849.65</td></tr></tbody></table></div>"
      ],
      "text/plain": [
       "shape: (1, 11)\n",
       "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n",
       "│ start     ┆ end       ┆ SR        ┆ Sortino   ┆ … ┆ DailyTrad ┆ ReturnOve ┆ ReturnOve ┆ MaxPosit │\n",
       "│ ---       ┆ ---       ┆ ---       ┆ ---       ┆   ┆ ingValue  ┆ rMDD      ┆ rTrade    ┆ ionValue │\n",
       "│ datetime[ ┆ datetime[ ┆ f64       ┆ f64       ┆   ┆ ---       ┆ ---       ┆ ---       ┆ ---      │\n",
       "│ μs]       ┆ μs]       ┆           ┆           ┆   ┆ f64       ┆ f64       ┆ f64       ┆ f64      │\n",
       "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n",
       "│ 2024-08-0 ┆ 2024-08-0 ┆ -624.4976 ┆ -664.6289 ┆ … ┆ 3.1236e9  ┆ -0.970748 ┆ -0.00017  ┆ 553849.6 │\n",
       "│ 9         ┆ 9         ┆ 86        ┆ 58        ┆   ┆           ┆           ┆           ┆ 5        │\n",
       "│ 00:00:00  ┆ 00:05:00  ┆           ┆           ┆   ┆           ┆           ┆           ┆          │\n",
       "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from hftbacktest.stats import LinearAssetRecord\n",
    "\n",
    "# Constructs the LinearAssetRecord from the recorded data.\n",
    "record = LinearAssetRecord(recorder.get(0))\n",
    "\n",
    "# Generates the statistics.\n",
    "# You can generate monthly and daily statistics, as well as custom metrics.\n",
    "stats = record.stats()\n",
    "\n",
    "# Prints the summary.\n",
    "stats.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "44333854-c0d0-47a1-bc84-699e5d08b3c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7EAAAH+CAYAAABKsonJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhTVfrA8W/2tuneNE33HWgBWZVNBUQBd8cZ3EEcRR11GEEdxXFG3PDnuI46orjgNuO+DO4gKoqyiexb931v0i1N0zTJ74/bBEoLtKVtkvZ8nuc+TW5ubk7a2+S+95zzvjKn0+lEEARBEARBEARBEHyA3NMNEARBEARBEARBEITuEkGsIAiCIAiCIAiC4DNEECsIgiAIgiAIgiD4DBHECoIgCIIgCIIgCD5DBLGCIAiCIAiCIAiCzxBBrCAIgiAIgiAIguAzRBArCIIgCIIgCIIg+AwRxAqCIAiCIAiCIAg+QwSxgiAIgiAIgiAIgs8QQawgCIIgCIIgCILgMwZVELt8+XJkMlmHxWAwuB93Op0sX76cmJgY/P39mTFjBvv27euwD6vVyp///Gd0Oh1arZaLLrqIkpKSgX4rgiAIgiAIgiAIQhcGVRALMHLkSMrLy93Lnj173I/985//5KmnnuL5559n27ZtGAwGzjnnHBobG93b3H777XzyySe8++67bNy4kaamJi644ALsdrsn3o4gCIIgCIIgCIJwBJnT6XR6uhF9Zfny5Xz66afs3Lmz02NOp5OYmBhuv/127r77bkDqdY2KiuKxxx7jpptuor6+nsjISN566y0uv/xyAMrKyoiPj+fLL79kzpw53WpHW1sbO3bsICoqCrl80F0nEARBEARBEAShmxwOB5WVlYwbNw6lUunp5gwKg+63mJ2dTUxMDBqNhkmTJrFixQpSUlLIz8+noqKC2bNnu7fVaDRMnz6dX375hZtuuont27djs9k6bBMTE8OoUaP45ZdfjhnEWq1WrFar+/727ds566yz+u9NCoIgCIIgCILgU7Zu3cqpp57q6WYMCoMqiJ00aRJvvvkmw4YNo7KykocffpipU6eyb98+KioqAIiKiurwnKioKAoLCwGoqKhArVYTFhbWaRvX87vy6KOP8sADD3Ra/89//pPw8PCTfVuCIAiCIAiCIPgoo9HIX//6105xiNB7gyqIPffcc923R48ezZQpU0hNTeWNN95g8uTJAMhksg7PcTqdndYd7UTbLFu2jKVLl7rvl5aWkpmZybx584iNje3NW+lTNpuNdevWcc4556BSqTzdHMEHiGNG6AlxvAg9JY4ZoafEMSP0lDcdM6Wlpfz1r38V0wz70KAKYo+m1WoZPXo02dnZXHLJJYDU2xodHe3epqqqyn1VxGAw0Nraislk6tAbW1VVxdSpU4/5OhqNBo1G477f0NAAgFKp9Pg/zZFUKpVXtUfwfuKYEXpCHC9CT4ljRugpccwIPeUNx4yYB9v3BvXlAKvVyoEDB4iOjiY5ORmDwcC6devcj7e2trJhwwZ3gDphwgRUKlWHbcrLy9m7d+9xg1hBEARBEARBEARhYAyqywJ33nknF154IQkJCVRVVfHwww/T0NDAtddei0wm4/bbb2fFihWkp6eTnp7OihUrCAgI4KqrrgIgJCSE66+/njvuuIOIiAjCw8O58847GT16NGeffbaH350gCIIgCIIgCIIwqILYkpISrrzySmpqaoiMjGTy5Mls3ryZxMREAP76179isVi45ZZbMJlMTJo0ibVr1xIUFOTex9NPP41SqeSyyy7DYrEwa9YsXn/9dRQKhafeliAIgiAIgiD0G7vdjs1m83Qz+pTNZkOpVNLS0oLdbu/311Or1WLO6wAaVEHsu+++e9zHZTIZy5cvZ/ny5cfcxs/Pj+eee47nnnuuj1snCIIgCIIgCN7D6XRSUVFBXV2dp5vS55xOJwaDgeLi4hMmce0Lcrmc5ORk1Gp1v7+WMMiCWEEQBEEQBEEQuscVwOr1egICAgYk2BsoDoeDpqYmAgMD+72H1OFwUFZWRnl5OQkJCYPq9+itRBA7yDmdTqqqqnA4HJ5uiiAIguBLjHmg0ECI50vFCYLQ9+x2uzuAjYiI8HRz+pzD4aC1tRU/P78BGeYbGRlJWVkZbW1tHs+GPBSIIHaQq6mpoaSkhKKiIoxGoyiyLAiCIJzY3o/go0XgtEP8ZBj9B8i8BAIjPd0yQRD6iGsObEBAgIdbMji4hhHb7XYRxA4AEcQOcq7aWG1tbRQUFGAymYiPj0er1Xq6aYIgCII32vfJ4QAWoHiztHx1N6RMh1G/hxEXgH+oR5spCELfEENf+4b4PQ4skUJrkAsNDWXkyJGEh4cjk8kwm80cPHiQgoKCQZeFThAEQThJ+/8HH14vBbBjroLb98KcFRAzXlqX+x3871Z4Ih3evVrqsW1t9nSrBUEQhCFG9MQOAXK5nPDwcEaNGkVVVRW1tbXU1tZiMpkwGAxERUWJlOCCIAhD3YHP4MM/SsHqKVfAxc+DXAFTbpWW2lzY+zHs/RCqD8LBz6VFpYUR58GoP0DqWaAUmTkFQfA+M2bMYOzYsTzzzDOeborQB0TkMoSoVCqSkpIYMWIEgYGB7kxq+/btw2Qyebp5giAIgqcc/AI+WAiONhh9GVzyghTAHikiFabfBbdshj/9AqcvhdBEsJlhzwfwzuVSD+2aP0PeBnD0f11GQRCGpoULFyKTyZDJZKhUKlJSUrjzzjsxm83HfM7HH3/MQw89NICtFPqTCGKHIK1Wy/Dhw921rFpbW8nLy+PQoUM0N4thYYIgCEPKwS/h/WulAHbUH+B3L3YOYI8kk0HUSDj7fvjLLrhhPUz6EwRGQUsd/PYmvHkRPJUhzaMt3gZO54C9HUEQhoa5c+dSXl5OXl4eDz/8MC+88AJ33nlnp+1c0+fCw8MJCgoa6Gb2WmlpKddccw0REREEBAQwduxYtm/f7n78448/Zs6cOeh0OmQyGTt37uzw/IKCAnegf/TywQcfuLczmUzMnz+fkJAQQkJCmD9/fqe6wUVFRVx44YVotVp0Oh2LFy+mtbW1P9/+CYnhxENYeHg4oaGhVFZWUlFRQVNTEwcOHCAiIoLY2FiRWU3wPfk/wlf3SCfjciUolNJPuQoUKunEXK464jHX7SMeU7Svcy1H3leopBP1uFMhNEE6mRcEX3boa3h/AThsMPJS+N1Lxw9gjyaTQdxEaZnzCBT+DHs+lObWNlXClhelJTRBSgg16g9SACwIgnCSNBoNBoMBgKuuuorvv/+eTz/9lKioKD799FNuu+02Hn74YYqKirDb7cycObPDcGKr1crf//533nnnHaqqqkhISOCee+7h+uuvB2D//v3ceeed/Pjjj2i1WmbPns3TTz+NTqfr9/dmMpmYNm0aM2fO5KuvvkKv15Obm0toaKh7G7PZzLRp05g3bx6LFi3qtI/4+HjKy8s7rFu1ahX//Oc/Offcc93rrrrqKkpKSvj6668BuPHGG5k/fz6fffYZIGVbPv/884mMjGTjxo3U1tZy7bXX4nQ6ee655/rh3XePCGKHOLlcTnR0NBEREZSWlmI0Gt3zZaOjo9Hr9WK+rOAbmqql+Xzm6oF5Pa1eCmbjT5V+xowDtcj6LfiQrLXw/nwpgM28BC59Wbq401tyBSSfKS3nPQF530sB7cEvoK4INj4tLZEjkGf+jsCWYGizgrhgKghexeFweOR1T/Z809/f393rmpOTwwcffMCbb75JcHBwl9svWLCATZs28eyzzzJmzBjy8/OpqakBoLy8nOnTp7No0SKeeuopLBYLd999N5dddhnffffdSbWzOx577DHi4+NZvXq1e11SUlKHbebPnw9IPa5dUSgU7iDf5ZNPPuHyyy8nMDAQgAMHDvD111+zefNmJk2aBMDLL7/MlClTOHToEMOHD2ft2rXs37+f4uJiYmJiAHjyySdZuHAhjzzyyDF/v/1NBLECINW2Sk5ORq/XU1xcjNlsprS0lJqaGmJjYwkLC/N0EwXh2JxOKWOquRr0mXDuY1JvrMMOdlv7bRvY2w7fdrS13z/ytms7m/Rc92Pt9+2tYMyDit1groJDX0gLgEwBUZkQd5oU1MadKs0hFL21gjfK/hbeu1o6pjMugt+/cnIB7NGUahg2R1pamyH7GymgzV4H1QdRbHiUWQAHloFfqDTCIVAv/QwyHL7t/mkA/zAQF1UFoV85HA527NjhkdceN25crwPZrVu38t///pdZs2YB0NrayptvvolGoyE4OLhT+ZusrCzef/991q1bx9lnnw1ASkqK+/GVK1cyfvx4VqxY4V732muvER8fT1ZWFsOGDetVOxsbG2loaHDf12g0aDSaTtutWbOGOXPmMG/ePDZs2EBsbCy33HJLlz2u3bV9+3Z27tzJv//9b/e6TZs2ERIS4g5gASZPnkxISAi//PILw4cPZ9OmTYwaNcodwALMmTMHq9XK9u3bmTlzZq/bdDJEECt0oNVqGTFiBLW1tZSWlmK1WsnLyyMoKIi4uDhREFvwTr++Kp0kKzTSyXh/D1e0WaB8F5Rsk5bibdBYBhV7pOXXV6Xt/MMOB7Rxp0LsePAL6d+2CcKJ5HwL714lBbAjLoA/vCYNle8v6gAY+TtpaamHg1/g2P0BzvyfUDht0jzaljqoOXT8/ciV0giIIwPcIMNRwa5eCnjV4rtKEAa7zz//nMDAQNra2rDZbFx88cU899xzvPDCCyQmJhIZGdkhYDzSzp07USgUTJ8+vcvHt2/fzvfff+/usTxSbm5ur4PYzMzMDvfvv/9+li9f3mm7vLw8Vq5cydKlS7n33nvZunUrixcvRqPRsGDBgl699quvvkpGRgZTp051r6uoqECv13faVq/XU1FR4d4mKiqqw+NhYWGo1Wr3Np4gglihSxEREYSFhVFRUUFlZSWNjY0cOHAAnU5HbGwsSqU4dDzC6QSLCRorICACgqJO/JzBrvoQfPM36fY5DwzMfDuVPyRMlhaX+tLDQW3JNijbKf2tstdKCwAyiBxxeAhy3KmgG+69vUv2NmhtglZz+9Io/bQ2dbgvt9STUXYA+aZcCI6GwEgpoNDqpeO0L3v4hJOT+x28cxXYre0B7Or+DWCP5hcCY6/CPnIeX37xBeedNQ2V1SjNn22slH42VUJTFTRVtP+shOZaaVREY5m0nIg6CCKHQfxkSJgk/RSfl4JwQnK5nHHjxnnstXti5syZrFy5EpVKRUxMTIdcLlrt8af3+Pv7H/dxh8PBhRdeyGOPPdbpsejo6B6180j79+8nNjbWfb+rXljX60+cONHdEzxu3Dj27dvHypUrexXEWiwW/vvf//L3v/+902NH91IDOJ3ODuu7s81AE2cWwjHJ5XJiYmLQ6XSUlJRgMpmoqanpMF/WkwfvoGNtlILTxvKufzaUST/tVml7dRDc/COEpxx/v4NZmxU+uh7aWqT6lKfd5Lm2hMRKy8hL2tvWCpV7oORXKN4qBbZ1hVB9QFp+e1PaThMMsRPa59WOBaVfeyZXp/TT6Wi/7TjOfbq3bZu1PShtOiIYdQWkrnWNh++3tXTrrSuAYQCVn3fxqEwKZAP1oI1s/+nqTXPdjpR+anUDG1ANNXk/wDtXSp8hw8+TAlhP1nSVycA/FIIjIXL48be12w4HtO6fRwW9jRXS7bYW6QJL6XZp2dw+dC4sSQpm40+TLkBFZnjvBSRB8CBfyYWi1WpJS0vr1XNHjx6Nw+Fgw4YN7uHERxo/fjwfffQRSUlJfdpxExQU1K05pNHR0Z16bTMyMvjoo4969boffvghzc3NnQJgg8FAZWVlp+2rq6vdva8Gg4EtW7Z0eNxkMmGz2Tr10A4kEcQKJ6RWq0lJSaGpqYni4mKam5spKSmhurqauLi4DpnShC7YLO3B6LEC1PbbrU3d36dCLZ2k/e82uPbzoXsi9t1D0vBd/3C4ZKV3/R6Uaik4jZ0Ak9qD66aqI3prf5VOsK0NUgKcvO89297jkatAEwjqQCl5leunJgjUWuzKAAqKS0mOCkbeXCMl2TJXgbkGcEJzjbR0h3/4UQFue/CbfKaUAVfonbwN8N8rpABv2FyY94ZnA9ieUqgOXyg6Hqez/YJguTTkv2gzFG+Byn1gKpCW3e9K22pCpFERrt7a2AkiOZsgDBFJSUlce+21/PGPf3QndiosLKSqqorLLruMW2+9lZdffpkrr7ySu+66C51OR05ODu+++y4vv/wyCkUPsrj3wrRp0zh0qOMUi6ysLBITE3u1v1dffZWLLrqIyMjIDuunTJlCfX09W7du5bTTTgNgy5Yt1NfXu4cdT5kyhUceeYTy8nJ3L/TatWvRaDRMmDChV+3pCyKIFbotMDCQjIyMDvNlc3NzCQgIQKPRoFarUalUqFSqDrd95Ypej1mb2ofAVUjD3horO/9sLJfmenWXJlia4xVkgKDorn8GGqT9vzBVKmexdRVMvrnf3qbXyvsBfmlP7X7x89LvxtsF6mHE+dIC0nDdqv2Hg9qqfe29pzKQyduTQh1xWybv4j7Heeyo/Sg1HYLPwwFpYHuQqpV6+NXaI4LWwBMGOw6bjb1ffknCeechPzLTrMMuDQN19ZSZq9t/Vh0OdJuq24eL1kjv3WKUluqDnV9oym0w6x/S+xC6L/8n+O/l0GaB9Nlw2Zu+FcD2hEwGfsHSEjkcTrlMWt9SL/2fFW2B4s1Qsh2s9dL84Jxv25+rAMNoqZc2fpL0Mzjm2K8lCIJPW7lyJffeey+33HILtbW1JCQkcO+99wIQExPDzz//zN133+1OYpSYmMjcuXMH5Lx2yZIlTJ06lRUrVnDZZZexdetWVq1axapVq9zbGI1GioqKKCuTpli4gl6DwdAhK3FOTg4//vgjX375ZafXycjIYO7cuSxatIiXXnoJkErsXHDBBQwfLo2QmT17NpmZmcyfP5/HH38co9HInXfeyaJFizyWmRhA5nSKCuR9raSkhPj4eIqLi4mLi/N0c7DZbHz55Zecd955fVb71W63u+fLnugQUiqVXQa3rttqtdp75tgeOee0U2BaeUTQWtmznlOlf8dANDimc4AaGCUFDt219WX48k5p33/6WcqE20f645jpU81GWDlNmhs34Tq48BlPt2hI65PjxWGX/q7mqs4Bb002HGr/8jWMht+/euLhp4Kk4Gf4zx/A1gxp58Dlb4PKz9Ot8vxnjL0NKvdKvbSu3tqG0s7bhSS0z6ltD2r1mT2rozsYub4n6wrbe7cL228XQn0JhMRJ0ztSZ0q/rz6aduTxY2YQamlpIT8/n+TkZPz8BvBzwemUEsu1mqXRajjbjxPXRdijbx/jwi6yY2wv3XY4nTQ0NBAcHDwggefxfp+9iQ0+//xzli1bRnZ2NsnJySxdurRDduLXX3+d6667rtPzjk4Wde+99/LWW29RWFjY5e/BaDSyePFi1qxZA8BFF13E888/32GkZVFREbfccgvfffcd/v7+XHXVVTzxxBPHnNM7EEQQ2w+GQhDr0traitlsxmaz0drais1m63C7u7XGZDJZl8GtWq0mJCSk7z98HA7Y9zEU/tIxMG2qlD5Yu0sdeERJiK5+tgepfiF9X2rF4YA3L4KCnyBhKiz8os+G03r1yYLTCe8vgANrICINbvpRDAH0sAE5Xg5+IQ2ftxilecNzHoGJ14sSRsdT+Au8/QewmSF1FlzxX68IYMFLP2PqiqVg1hXYVu49POfcRR0kDWt3zV8/cuSDTNH+s32RK456/FjbyDqukymk7Mp+Ie1LqDRKZyATpLU2S7V9uwpU6wqlaRDdEWiAlBlSUJsy46SSa3nlMePjBiyIdbRJx5StuT1wbZbW9TMn7d8PEWnIetJJ0Et9HcQKx+cl3V+Cr3IFmsdit9u7DG6PXGez2XA6nbS2trqD4iOFh4eTnJzcd43O/1HKZlux+9jb+IdJX75BUcf4aeh5z2lfk8ulYbQvTIWiX2DrSzD5T55rz0DZ8bYUwMqVUjkdEcAODSPOl+YsfvonKcPuF3dItU4vfl5KCCV0VLT5cACbMtOrAlivFRovLaP/IN23NrYnZmsPakt+lXIReGoOuzrwiMC2J0to5yDY3gYNJUcEpwUdA1Vz1YnbExgFoYkQlnj4Z3AMVB2Ufj8FP0sjmXa/e3gectQoqYc2ZSYkTpUyvQuDi9Mp9a7azIcD1y6TBMqkv78qQDqfcTo7JzV033d0fqyr2ziPegXpvuitG5xEECv0K4VCgb+//3FTmTudzk5Bruu20WjEZDIRGxt73GC5W6qzYN0/IOsr6b4mGMYvkDJWuuaaBkVJX8y+MucuLAlmPyid0H/7gDTfrQ+HFXud2lz46m7p9ln3QYxnygAIHhJkgKs/gi0vwrf3S//LL0yRknqld84uOWQVbYG3f98ewM6AK98RAWxvaIKkgCt1pnTfYZfmsBdthpos6b7TAU47HTKCu9efYOmwnfPwfhx26cS/pV5aXFNXXJnFuxr23B2uIFimkPbhtJ/g/QcfEaAmdQxYQxOOXYs37WyYehvYWqQLALnfSUFt+S6pd7tyr5TPQKGBxCntvbQzpQB3sObQGMzaWo/oYW0fHnz0CAaQElKqtNJxo9ZKU6H6+u/dIdB14nDaaWpoIFDljxizM/iIIFbwOJlM5u7RPbqul81mo7Gxkaqqqt4PvzDXwA+Pwq+rpS9tmQIm/hFm3DM4enAm/BH2fSoNK/7frbDwy8F5ImC3wceLpC/JpDNg6mJPt0jwBLkcptwCyWfARzdICaD+83uY9Cc4e7kI1oq3SQFsa5OU0fmKd0RvV1+Rtyd+Mowe2Ne126Re4Za6w4HtkYvlGOtdi619dJMrCHZRaKRg9Mie1CN/+oed3HB9lR+kTJcWHpC+i/N+gNz2nuyGUul+3g/S9trII4Yez5RqTgvexXWBpbX5cE+rw9Z5O5lC6mF1BayqgIEpn+aeJ+tqrxyHXAUihB2URBAreLWoqCgaGxupqakhOjq6ZynNbS2wZSX89NTh+TvDz4NzHgRdev802BM6DCveNHiHFW94TCpJ4xcCv3tRJFcZ6gyj4cYfpNEVW1dJ/+v5P0pDzKMyT/j0QalkO7x9qTTkNekMuPK9Y/eWCb5DoYKAcGnpDbsNWhoOB8GONgiJl0YdDeQFT61OGqo9+g9ST1lNlhTQ5n4HBRulZG57PpAWkOr4ps6UgtrEqSAbpBm1Pck1hNdugzakXBtOe8dRBg57exKmZinDeVeU/u3Z7QOk3lalRuQrEPqdCGIFrxYSEoKfnx8tLS3U1NR0r6iywwF7P4L1D0B9sbQuegzMfljqmRiMBvuw4sJN8NOT0u0LnpGyXwqCyh/Oe1wavvi/W6USRatmwOyH4LQbh9ZJVOl2eOt30gW7xGlwlQhghXYKFWgjpMVbyGRShvHI4VKJuLZWKNkqBbS530PZDqg+IC2bXwCFGkXcaaS3GpAVBkPCaSIfwpGMeVJm6JYGqdfe2ih9FnT4ecR613aKIJj2Txw1LaDq5uelXNUxYFX5i4vK7USu3IElgljB60VFRbkLUOv1emTHOzEt/EVK2lT2m3Q/OFaqKzn6ssE5xPZIE/4I+/8n9UYNpmHFLfXw8Y3SVeExV8GoSz3dIsHbDJsDf/oFPr0FctbBV3+F7HVwyQtSbd7BrvQ3ePN3Ut3ThKlw1fviBF/wLUo1JJ0uLbP+IZXbyt/Q3lP7PdQXIS/cSCbA2x9Kw1WjMiHuNIg/DeJOhfCUoXXhCqRgdO3f4Lc3e/V0tawBucVImSmYyJAA1Eo5MndW7fZM2XK5lEhR6ScNEVcc0SPuBFptQBdDir2Aw+GgtbWVlpaWfi+x43Q6qa6udlfbEPqfCGIFrxceHk5paSmtra3U1dURFhbWeaPaXGlY4cHPpfvqQDh9CUy+Zej0RsjlcNHzsLJ9WPGWF6W5g77uizuhvkjqbT73MU+3RvBWgXq4+gOpfvLa+6Rg9oUpUiA7bI6nW9d/ynbCW5e0B7BTpN+BJ7OmC0JfCAiHkb+TFqcTjHnYs9ZRseVDYuylyBrLoGKPtPz6avtzIqRg1rXEThjc/wt5G6QL1q4RZ5EjpGRcmqAjlmDwO3pdEGhCQBOEXBNEstyf8toGyixHDxV2tC8AVsCMr3E6nVgsFvz9/Y/fAdJHZDIZcXFxPZv6JvSaCGIFryeXy4mMjKS8vJzKysqOQWyzUZorue0VaZ6PTA7jr4WZ9w6NHpijhSVKc36/WArrH5RO3n15WPHu92HP+9LV4Etflr6MBeFYZDKYdKPUm/PRDdLw4v9eBqcukoYY+2KCI7tNStxjMXWxGKWgvaUe4ieJAFYYnGQyiEjFMTGBX6uipTqxzVVQsk1airdC+U5oroWsr6UFpPMB/Uiprm/8aVKvbUSq7/fWtpph3f2w7WXpfmiidLEu6fRe7U4NJASG0dbWht1+gozVPsZms/Hjjz9y5plnDkjvqEqlEgHsABJBrOAT9Ho9FRUVmM1mmpqaCPRTSclcfnxcOoEDaR7oOQ+BfoRnG+tpE13DijdIwyuv+9I356uYCqU5vgDT/yqdhAhCd0RlwqLvpHnxm1+QTvYKfpKSPg10ZlkXm+WI4LPuGEGpqfM2rY0n3nfcqXD1h1IPiyAMBSGx0jLyEul+m1XqlS3eeji4rS+Gyj3Ssn21tJ1/WHtP7WlScBs7wbcujhZukmplm/Kl+xP/KJ33nOTFK9cQ2ME2DFahUNDW1oafn9+ge2+CCGIFH6FUKomIiKCmuprKn94k8NCLUlF2kGrLzX74cC2/oU4ma89WPAWKN7cPK77V063qGYcdPrlJSkARdxqccaenWyT4GpUfzH0UUmdJJ33VB+Hls6QyPJP+1D/zxR12MOa318LcJy1V+6CxAtpaTm7ffiHSCfjRS2gCTLjOt07EBaGvKTVSUBo38fC6hvL2gHarVHqqbId0YSh7rbQAIAN9JsS3D0FOn+2do7hsFvjuYdj0b8Ap5fu4+Hkpc7MgDFEiiBV8RlRrETX/u4O6yv1Y9XI0odEw6+8w5krf7GnsT6EJ0vDJz5dIw4rT54AuzdOt6r6NT0nzetVBcOkqUIiPKqGX0s+GWzbB/26DrK/gm3sh51u4ZCUEGXq/32bj4UDVFbRWHTh2CQqQhsV3FYgecwmVfvqFiM84Qeip4GjIvEhaQMqAXLlHCmhdwW1dkXShqWofbH9dqp077mqY+mcpUZQ3KNkOn94slSQCGHsNzF0hfS4IwhAmzgyF3nPYpUy4xlypkLXKVdTa/4j7R6RgV/n3bi6KMR++XY7f/k8JqXdQr/SncvQNJPzuPpGB83gmXCcNK877Af53C1z3lW+cCJdsh+8flW6f9ziEJ3u2PYLv0+rgynekBDDf/E0q4/HCFLj43zDivOM/126DmuyOwWrlPmgs63p7pR/oMyBqpDRKJGqkdFHJP1wa7uvr8/EEwVcp1dLw4dgJwM3SusbKwwFt3g9Qvgt+fU0KaDMvgdNvl0r0eUKbVcr5sfFpKTt/YBRc+CwMn+uZ9giClxFBrNAzTidU7G5PuPMBNFX24Mmy9uDWvz24PV7g276Yq6XU8Q4byORETb2C+phLqQ3SEyPXiAP4eGQyuOg5eGEqFG+BzSth6m2ebtXxWZvg4xukAusjL4UxV3i6RcJgIZPBqTdA0hnw0fXS/Ll3r5TmlM1+RPoMaqrqGKhW7pOGITuOUT4iNLE9WB15OGgNT/GNi0WCIEBQFGRcIC1OJxT+DBufkbKb7/tYWlLPkqodJJ0xcBehynfDJzdLPcQAo/4gXdQNCB+Y1xcEHyBiAKF76oqloHX3e9JJnYt/mFTWoc0qzdmwmaG1+fBtm+WIuWDO9nVmaO7h66eeBec8RJBhFAEHDtDc3Ex1dTXR0dF99Q4HJ/ew4tvhu4ekbMW6dE+36ti+vkcq2h4cBxc8JXqthL4XORxuWC8Ns9/0vNTrcuhrsLdCc03Xz1EHdQ5W9RliHqogDCYy2eFatRV74Od/wd6PpJEbud9BzHgpmB1xQf/VYLfbpJ7XDY9JFRcCIuCCpyHz4v55PUHwYSKIFY7NUicNR939PhRuPLxeoZGGs5xyBaSdLQ3ROR6HHWztgW2r+ajbxwh8Xds52iDjYmleW7uoqCjy8/Oprq7GYDAMSO0vnzZhYfuw4u+lmnLeOqx4//9gx1uADC59SbpAIgj9QamBOY9In1+f3Hx4aLBMDuGpHYcCu4YDi88ZQRg6DKOlbOZn3Qe/PC99N5X9Bu/Ph4h0mLYYTrlc+izpK1UHpM+j8p3S/YwL4fynITCy715DEAYREcQexwsvvMDjjz9OeXk5I0eO5JlnnuGMM87wdLP6V1urNIxm17uQ9Q3YrYcfSzoDTrkMMi6SEo50l1xxuMB2HwgLC6OkpASbzYbRaCQiIqJP9jtouYcVT/HeYcX1pbBmsXT79Nt7Xe9OEHokdSbcuhkKfobgGIgcIU1nEARBAAhLgvOfgOl3w9aXpNJ+tdmw5s/w/QqYfAtMvO7kzm8cdvjlOfj+EWlEiF8onPcEjP6DuHgmCMchgthjeO+997j99tt54YUXmDZtGi+99BLnnnsu+/fvJyEhwdPN61tOpxTc7H4P9n0ipaB3icyAMZdL8zFC4z3XxiPIZDL0ej2lpaVUVlaKILY7QuO9d1ixwyGVQGmpg+ixMONeT7dIGEr8w6T5cIIgCMcSGCn1yk77i5T0adO/obEc1v0dfnoCTl0Ek27uea9pTY70/VeyVbqfPltK3hQspkoJwon006B+3/fUU09x/fXXc8MNN5CRkcEzzzxDfHw8K1eu9HTT+k5NNnz3CPxrDLw2R5obZjFBoAGm3AY3/SSVpjh9idcEsC6RkZHI5XIsFgsNDQ2ebo5vmLAQUmZKc5Q/vUW6+usNNv8b8jdIibx+/8qJh6cLgiAIgidogqTyO3/ZBRc9Lw0tbqmXAtlnRsHnS6WKCificEijol48XQpg1UHS/q56XwSwgtBNIojtQmtrK9u3b2f27Nkd1s+ePZtffvnFQ63qI03VsPlFWDUTnp8IP/4T6gpBHSjVW53/KSzdL80Xiz7Fa4eyKBQKdDodAJWVPcmQPIS5hhWrg6Qvzc0veLpFUgbGbx+Qbs9Z4T29w4IgCIJwLEoNjJ8Pt26Fy9+Wyva0tUhlvJ4bDx/+Ufp+64qpAN64UEpk2GaBlBlSh8H4+V57ziV4RmlpKddccw0REREEBAQwduxYtm/f7n78448/Zs6cOeh0OmQyGTt37uxyP5s2beKss85Cq9USGhrKjBkzsFikmuY//PADMpmsy2Xbtm3ufXT1+Isvvtiv7/9ExHDiLtTU1GC324mKiuqwPioqioqKik7bW61WrNbDc0cbGxsBaGtrw2Y7RmmGAWRrrifWuAn5O2/gzP8BmVPqgXPKFDhTZuIYPQ9n+tzDNVftDmnxcmFhYZSVlWE0GmloaMDf39/TTfJ+WgOysx9A+eVSnN89TFvKLOlK8lFcx22/Hr+2ZpQfXY/MYcMx7Fzsp1wNXvD/IvTcgBwvwqAijhmhp7z2mEmbC6lzkBX9jPyX55DnrZeyGu/9CEfKLBxT/4wzYRoA8t9eR75+OTKbGadKi2PW/TjGXycFr972vgYBbzpm2traerS9yWRi2rRpzJw5k6+++gq9Xk9ubi6hoaHubcxmM9OmTWPevHksWrSoy/1s2rSJuXPnsmzZMp577jnUajW7du1C3p5he+rUqZSXl3d4zt///ne+/fZbJk6c2GH96tWrmTv3cJ3ikJCQHr2nviaC2OM4Ouut0+nsMhPuo48+ygMPPNBp/fr16929hZ6SXL2WzLIPmehoca8zBaRQEjaV0rBJWFUhUAgUbvBcI09CRUUFTU1N7Nq1q9NFB+EYnBFMCRqFvnEvjW/N56f0+6SsrF1Yt25dvzXjlOI3SK7JokUZwveaC2j96qt+ey1hYPTn8SIMTuKYEXrKq4+ZkGsJHj6D9KoviDVtQZ63HnneeowBqdjlGiKb9gNQox3OjsQbaK6MAvHd1++84ZipqTlGCbdjeOyxx4iPj2f16tXudUlJSR22mT9/PgAFBQXH3M+SJUtYvHgx99xzj3tdevrhzgu1Wo3BYHDft9lsrFmzhttuu61TzBMaGtphW08TQWwXdDodCoWiU69rVVVVl4HSsmXLWLp0qft+aWkpmZmZzJo1i9jY2H5v7/HIDrSh/PhtzOpI1BOugTGXERiRzghghEdb1jfMZjOHDh1CJpMxatQoVCqVp5vkG+rH4Fx1OuHmHC6IKMAxuWO2YpvNxrp16zjnnHP65Xcqy/4G5Y71ACjnvcLZKTP7/DWEgdPfx4sw+IhjRugp3zpm/kSbqQD5lheQ7/ov4c25ADiVfjhm/I2Q025ixjEuHgt9x5uOmdLS0h5tv2bNGubMmcO8efPYsGEDsbGx3HLLLcfsce1KVVUVW7Zs4eqrr2bq1Knk5uYyYsQIHnnkEU4/vesqEGvWrKGmpoaFCxd2euy2227jhhtuIDk5meuvv54bb7zR3aPrCSKI7YJarWbChAmsW7eO3/3ud+7169at4+KLOxec1mg0aDSHa4W5Eg0plUqP/9OQcT5tC77g2901nHfW+Z5vTx8LDQ0lNDSUpqYm6urqiImJ8XSTfIMuWZqD+tliFD88imLE+RA5rNNmKpWq74+Zpir4/C/S7cm3oBw++/jbCz6jX44XYVATx4zQUz5zzOjT4cKnYea9Unme2lxkM+9FoUvHCyu1D2recMwolVLI1djY2CEh6dExhEteXh4rV65k6dKl3HvvvWzdupXFixej0WhYsGBBt14zLy8PgOXLl/PEE08wduxY3nzzTWbNmsXevXs79Mi6vPrqq8yZM4f4+I4JXR966CFmzZqFv78/69ev54477qCmpob77ruv27+DviaC2GNYunQp8+fPZ+LEiUyZMoVVq1ZRVFTEzTff7Omm9YzKD2f8JNjzpadb0m+ioqJoamqiuroag8Hg0atCPmX8Atj/P8hdD/+7Bf74jVTTt780lEPOt1Lii+Ya0I+EWff33+sJgiAIgqe5yvMIApCZmdnh/v3338/y5cs7bedwOJg4cSIrVqwAYNy4cezbt4+VK1d2O4h1OKT8NjfddBPXXXedez/r16/ntdde49FHH+2wfUlJCd988w3vv/9+p30dGayOHTsWgAcffFAEsd7o8ssvp7a2lgcffJDy8nJGjRrFl19+SWJioqebJhwlJCQEjUaD1WqltraWyMgT12lzOp0crGikpslKfFgAsWH+qBRDLPiVyeCiZ+GFKVCyDTY9L9XA6yv2NikLcvY6yFkHFXsOP6b0l8rpqPz67vUEQRAEQRC82P79+ztMNeyqFxYgOjq6U8CbkZHBRx991O3Xio6WyjV1tZ+ioqJO269evZqIiAguuuiiE+578uTJNDQ0UFlZ6bGcNCKIPY5bbrmFW265xdPN8EpOpxOLzU5tUyt+KgWRQV3/Ew4EmUyGXq+nuLiYyspKd6rxozmdTnYW1/H13gq+3ldBYW2z+zGFXEZMqB+J4VoSIgJICA8gMTyAhIgAEiO0BGoG6b9KSJxUTmnNn6WawcPmQuTw3u+vsULqbc1eB3nfS/Xz3GQQM04q5j76D6KcjiAIgiAIQ0pQUBDBwcEn3G7atGkcOnSow7qsrKwedaYlJSURExPT5X7OPffcDuucTierV69mwYIF3Rp6vWPHDvz8/DpkSx5og/TMXOgpu8OJqbkVk7mVWnMXP5tbMZo7Lta2w2V4hkUFcmZ6JGcMi2RScjh+qoGd8aHT6SgrK8NqtVJfX+/+p7I7nPxaYOSrvRV8s6+C8vrDWZo1SjlxYf6UmCxY2xwUGy0UGy2Q03n/EVo18eEBJEa4glstie3Brj5I02XQ7DPGzZeGFed8C5/eAtev7f5z7W1Q+itkr5UC14qj6uL5h0HqLClwTZsFWs9m6xYEQRAEQfB2S5YsYerUqaxYsYLLLruMrVu3smrVKlatWuXexmg0UlRURFlZGYA7WDUYDBgMBmQyGXfddRf3338/Y8aMYezYsbzxxhscPHiQDz/8sMPrfffdd+Tn53P99dd3astnn31GRUUFU6ZMwd/fn++//56//e1v3HjjjcfsSR4IIogd5MrrLewrMbG1WkbFzwXUt9g7BqPtwWm9xYbT2fP9q5VybHYHWZVNZFU28crGfNRKOZOSwzkjXceZwyIZHhXU70GeXC4nMjKSiooKSsrK2VNt46u9FazdV0FNU6t7O61awcwRes4dFc2M4ZFoNUocDidVjVaKjM0U1prbfzZTZJQWY3sgX2tuZWdxXafX9lPJSQgPICH8cGCb0B7sxob5o1F6eQoHmQwufBZemCwFpJueh9OOMwKhqaq9t3Ut5H53VG8rUm9r2jlS4Bo7vn/n2QqCIAiCIAwyp556Kp988gnLli3jwQcfJDk5mWeeeYarr77avc2aNWvcc10BrrjiCqDjPNvbb7+dlpYWlixZgtFoZMyYMaxbt47U1NQOr/fqq68ydepUMjIyOrVFpVLxwgsvsHTpUhwOBykpKTz44IPceuut/fDOu0/mdPYmdBGOp6SkhPj4eIqLi4mLi/NoW17dmM9Dn+/v9vahASrCA9SEa9WEadVEHPkzQE14oNr9eLhWTYBaQb3Fxs85tfyYVc2P2dUdejsBIoM0nJGuY/qwSKal6dAF9v1VmxabnR/2l/P2VxvZkl+LVWtArpbmWwb7KTk7M4pzR0VzRrqux73EjS02CmubKTY2U+gOcKVgt9RkwXGc/yCZDKKD/YgLl4Lb+LAAEiL83bcjvakX97e3YM1toNBgu+F7vtyaw3nnnSfNFS75VZrXmr0Oynd2fJ5fqNTLmj5b6nUNPPGcZGFwsdlsfPnll9Lx4gtZQwWPE8eM0FPimBF6ypuOGW+KDQYL0RM7yMWF+ZNhCMJhqSc9IQZdkJ87AD16CfVXoexFcqPQADXnnxLN+adE43Q6ya1u4sesGn7KrmZznpHqRisf/1bKx79JNbJGxgRz5rBIzkjXMSExrNc9lc2tbfxwqJqv9lbw/cEqmqxttNU3Y7e2ERFg5sLThnHuKAOTUyJQK3uftCnIT8Wo2BBGxYZ0esxmd1BqslDY3mtbVGvu0Ivb3GqnrL6FsvoWtuYbOz3fTyUnLqy99zY8gLiw9gC3fRnQubjjroH9n0LOtyg++zPxygkoPvkE8n8Ai6njttFjId3V2zpB9LYKgiAIgiAIA0YEsYPcnJEGzhoW0X4l6pR+vxIlk8lI0weRpg/ij6cnY22zs73AxIbsan7KqmF/eQP7yqRl5Q+5BKgVTE6JcA89TtFpj9sz2dBi47sDVXy1t5wNWdW02A7PyzUE+zFrwhjS1XWMjA1lzCnDUavV/fp+VQo5STotSTptp8ecTie15laK2wPaYmMzxUaLdNvUTFmdhRabg5yqJnKqmrrcf4RWfUQv7uEANyE8gJhQfxTyPuzFPWJYsbxsO+PZfvgxv1BIPUsKXNPOhkB9372uIAiCIAiCIPSACGKFfqVRKpiapmNqmo5l50J1o5WNOVJA+2N2DTVNVr47WMV3B6sAiA31dwe001J1hASoMJpbWbe/gq/2VvBzTg02++Hxu/Hh/pw7Kpq5owyMjQtFLpeRnZ1NQ0MDVVVVHh2yIZPJ0AVq0AVqGJcQ1ulxm91BeV2Lu9e22HRksNuMqdnmnou7q4u5uEkRAXz259MJ8uvDCxMhsXDB0zg/vYV6dTRB4y9FMXwOxE4Ehfi4EARBEARBEDxPnJUKAyoySMPvxsXxu3FxOBxSrdafsqW5tNvyTZTWWXh3WzHvbitGLoOUyEDya8zYj5h4mqYP5NxRBuaOMpAZHdyp51av19PQ0EBNTQ3R0dEoFN451FWlkEvlfCICuny8scV2uOf2qCC3yNhMQW0zb/xSwG1n9XGpmtF/oG3ExWz48kvOm3EeCjH3SBAEQRAEQfAiIogVPEYul5EZE0xmTDA3TU/F0mpnc34tP7XPp80+YphtZnQw544ycO5oA2n6oOPuNyQkBD8/P1paWqipqfFYEeaTFeSnIjNGRWZM53pi/9tZyl/e3cmqH/NYMDWJ4L7sjRUEQRAEQRAELyaCWMFr+KsVzByuZ+Zwab5lWZ2F3SX1ZEQHkRjRec7p8URFRVFYWEhVVRV6vd57MgD3kQtOieH573LIrmri1Z/yWXLOME83SRAEQRAEQRAGRO9TtgpCP4sJ9WfuKEOPA1iA8PBwlEolra2tmEymEz/BxyjkMm4/WwpcX9uYT11z6wmeIQiCIAiCIAiDgwhihUFJLpej10s9upWVlR5uTf84d5SBEYYgGq1tvPJTvqebIwiCIAiCIAgDQgSxwqAVGRmJXC6nubmZxsZGTzenz8nlMvcw4tU/52M0i95YQRAEQRAEYfATQawwaCmVSiIiIoDB2xs7OzOKkTHBmFvtvPRjrqebIwiCIAiCIAj9TgSxwqDmGlJcX19PS0uLh1vT92QyGUvbe2Pf/KWQ6karh1skCL6lvr6egwcPUllZicPh8HRzBEEQBEHoBhHECoOan58fISEhAFRVVXm4Nf3jrBF6xsSHYrHZeXGD6I0VhO5yOp0UFRVhNpspKSlhz549IpgVBEEQBB8gglhh0HPVia2traWtrc3Drel7R/bGvr25kMqGwdfjLAj9oaamhtbWVpRKJRqNhra2NhHMCoIgCIIPEEGsMOgFBQUREBCAw+Ggurra083pF2em65iQGIa1zcHKH0RvrCCciNPppKKiAoCYmBhGjhxJUlKSCGYFQehzLS0t1NXVeboZgjCoiCBWGBJcvbFVVVWD8oRUJpNxR3tv7H+3FFFWZ/FwiwTBu7l6YVUqFREREchkMiIiIkQwKwhCn6qpqWH//v3k5uZiNBo93RxBGDREECsMCWFhYajVatra2gbtl8iU1AgmJYfTanfw7+9zPN0cQfBaR/bCRkdHI5cf/io8UTBbUVEhgllBEE7I4XBQWFhIYWEhTqcTwP25IwjCyRNBrDAkyGQyd6biwVpu58i5se//WkyxsdnDLRIE73R0L2xXjhXMlpaWimBWEITjam1t5dChQ9TU1ADSxTKFQoHFYhHDigWhj4ggVhgydDodCoWClpYWGhoaPN2cfjEpJYLT03TY7E6e/27o9cZ+uqOUcQ+u5Q8rf+GJbw6xMbsGS6vd080SvMjxemG7IoJZQRB6oqGhgQMHDtDc3IxSqSQ9PZ2YmBgiIyMB0RsrCH1F6ekGCMJAUSgU6HQ6KisrqaysJDg42NNN6hdLzklnY04NH/5Wwi0zU0mM0Hq6SQNie6GRuz7chc3u5NdCE78Wmnj++xxUChlj40OZnBLB5JQIJiSG4adSeLq5god0pxe2K65gNjw8HKPRSHl5OVarldLSUiorK4mKiiIyMhKFQhxbgjBUlZeXU1ZWBkBAQACpqamo1WpAqltfVVWF2WymsbGRoKAgTzZVEHye6IkVhhS9Xo9MJqOhoQGLZXAmP5qQGM70YZHYHU7+tT7b080ZEGV1Fm566zdsdidzRkbxz9+fwqXjYokO8cNmd7KtwMRz3+Vw9StbOGX5Wi57cRNPrT3EL7k1tNhET+1Q0dNe2K4cr2d27969VFRUYLeLY0oQhhK73U5ubq47gNXpdAwfPtwdwAIdLpyJ3lihO0pLS7nmmmuIiIggICCAsWPHsn37dvfjH3/8MXPmzEGn0yGTydi5c2eX+9m0aRNnnXUWWq2W0NBQZsyY0eEcOCkpCZlM1mG55557OuyjqKiICy+8EK1Wi06nY/HixbS2tvbL++4u0RMrDClqtZrQ0FBMJhOVlZUkJSV5ukn9Yuk5w9iQVc2nO0q5dWYaqZGBnm5Sv7G02rnxrV+pabKSER3M05ePJUCt5LJT43E6nRQZm9mcV8vmPCObcmupaGhha4GRrQVGnv0uB7VCztgEqad2SkoE4xJCRU/tINXbXtiuHNkzazKZKCsrEz2zgjAEWSwWcnNzsVqtyGQyEhIS0Ol0XW5rMBioqamhoaEBs9mMVjs0RkoJPWcymZg2bRozZ87kq6++Qq/Xk5ubS2hoqHsbs9nMtGnTmDdvHosWLepyP5s2bWLu3LksW7aM5557DrVaza5duzpdxH3wwQc77CMw8PB5o91u5/zzzycyMpKNGzdSW1vLtddei9Pp5LnnnuvbN94DIogVhpyoqChMJhNGo5HY2FhUKpWnm9TnxsSHcnaGnm8PVPHs+mz+dcU4TzepXzidTv760W72ljYQoVXz8oIJBKgPf6zJZDISI7QkRmi5/NQEnE4nhbWuoLaWTXm1VDZY2ZpvZGu+kWfXZ6NWyhnXPvx4SmoEY+NFUDsY9EUvbFdkMhnh4eGEhYVhMpkoLy+npaVFBLOCMAQYjUYKCwtxOByo1WpSU1MJCAg45vZqtZrw8HBqa2upqKggNTV1AFsr+JLHHnuM+Ph4Vq9e7V53dMfL/PnzASgoKDjmfpYsWcLixYs79Kymp6d32i4oKAiDwdDlPtauXcv+/fspLi4mJiYGgCeffJKFCxfyyCOPeGx6nhhOLAw5Wq2WwMBAnE4nVVVVnm5Ov7n9bClT8ZpdZWRVNnq4Nf3jhR9y+WxXGUq5jJXXTCAu7NgnDyAFHEk6LVeclsAzV4xj87JZfH/nDB69dDQXj41BH6Shtc3Blnwj/1qfzRWrNnPKA2u5YtUmnvk2iy15tVjbxFBRX9SXvbBdcQWzmZmZJCcn4+fn5x5mvHPnTvbv309RURFGoxGr1drnry8IwsBxOp0UFxeTn5+Pw+EgODiYjIyM4wawLq5Aoa6ujpaWlv5uquBlGhsbaWhocC/H+j5Ys2YNEydOZN68eej1esaNG8fLL7/co9eqqqpiy5Yt6PV6pk6dSlRUFNOnT2fjxo2dtn3ssceIiIhg7NixPPLIIx2GCm/atIlRo0a5A1iAOXPmYLVaOwxvHmiiJ1YYkqKiomhqaqK6uhqdTodGo/F0k/rcqNgQ5o408PW+Cv71bTb/vnq8p5vUp77dX8kTaw8B8MDFIzktObzH+5DJZCTrtCTrtFx5mtRTm19jZnOe0d1TW91obb9v5BmyiQzSsOzcEfxuXCwymayv35bQD/qrF7YrR/fMVlRUYLFY3Et1dTUgzY8LDAwkMDAQrVZLQECAOJ4EwQfYbDby8vJoamoCpKA0Jiam2/+/fn5+hIaGUldXR0VFxaCd1iR0LTMzs8P9+++/n+XLl3faLi8vj5UrV7J06VLuvfdetm7dyuLFi9FoNCxYsKBbr5WXlwfA8uXLeeKJJxg7dixvvvkms2bNYu/eve4e2b/85S+MHz+esLAwtm7dyrJly8jPz+eVV14BpDncUVFRHfYdFhaGWq326PxuEcQKQ1JISAj+/v5YLBYOHTpEeno6/v7+nm5Wn7v9nHS+2V/BF3vKua28gYzowZGRObuykdvf24nTCfMnJ3L1pMQ+2a9MJiMlMpCUyECumiQFtXk15iPm1NZQ3Whl6fu7+O+WIpZfNJJRsSF98tpC/+nvXtiuuILZ8PBwbDYbTU1NmM1mmpqaaG5uxmazYTKZMJlMAMjlcrRarXukiFarRakUX9GC4E2amprIy8vDZrOhUChISkrqMEexu6Kjo6mrq8NoNBITE9MhAZQwuO3fv5/Y2Fj3/WN1ojgcDiZOnMiKFSsAGDduHPv27WPlypXdDmJd5d9uuukmrrvuOvd+1q9fz2uvvcajjz4KSEOOXU455RTCwsL4wx/+4O6dBbq8SON0Oj168VV8QwpDkkwmIz09nezsbCwWC1lZWaSnp3drKJAvGWEI5vzR0Xy+u5yn12WxasFETzfppNU1t3LDm7/SZG1jcko4/7gw88RP6iWZTEZqZCCpkYFcPSkRa5ud1zYW8Nx32fxaaOKi5zdy1aQE7pw9nNAAcRLijQayF/ZYVCoVYWFhhIWFAdKJRXNzM01NTe7gtq2tjcbGRhobDw/99/Pzc/fWBgYGDsoRI4LgK6qqqigpKcHpdOLv709KSgp+fn692ldAQADBwcE0NDRQUVFBQkJCH7dW8FZBQUHdmkMaHR3dqdc2IyODjz76qNuvFR0dDXTu/c3IyKCoqOiYz5s8eTIAOTk5REREYDAY2LJlS4dtTCYTNputUw/tQBJzYoUhS6VSMWzYMLRaLW1tbWRlZbmHBw0mt5+djkwGa/dXsqek3tPNOSltdge3/XcHhbXNxIX588LVE1ApBu5jTKNU8KcZqay/YzoXjonB4YS3Nxcx84kf+M+WQuwO54C1RegeT/TCnohcLicwMBCDwUBaWhpjxoxh5MiRJCYmEhER4T4xbmlpoaamhoKCAvbu3cuuXbvIzc2lsrKSpqYmnE5xvAlCf3M4HOTn51NcXIzT6SQ8PJwRI0b0OoB1cc2NrampwWaz9UVThUFk2rRpHDp0qMO6rKwsEhO7P/IsKSmJmJiYHu9nx44dwOEgeMqUKezdu5fy8nL3NmvXrkWj0TBhwoRut6eviZ5YYUhTKpWkp6eTk5NDU1MT2dnZpKameizTWn9I0wdx8ZgYPt1ZxjPfZvHqwlM93aRee+TLA2zMqSFAreCVaycSrvVM72d0iD/PXTmOq05LYPmafRyqbORvn+zlna1FPHDRKCYkhnmkXUJH3tAL211+fn74+fm5S3O0tbV1GILs6q2tq6ujrq4OkEYKBAUFkZSUNCizrAuCp1mtVnJzc7FYLMhkMuLi4tDr9X2y76CgILRaLWazmaqqqg5DTAVhyZIlTJ06lRUrVnDZZZexdetWVq1axapVq9zbGI1GioqK3PWJXcGqwWDAYDAgk8m46667uP/++xkzZgxjx47ljTfe4ODBg3z44YeAlLRp8+bNzJw5k5CQELZt28aSJUu46KKL3CMEZs+eTWZmJvPnz+fxxx/HaDRy5513smjRIo+eL3vvN7ogDBCFQkF6ejohISE4HA5ycnLcJ4mDxV/OHoZCLmP9wSp2FJk83ZxeeX9bMat/LgDgqcvGMsLg+QsNU1Ij+GLx6dx/YSZBGiV7Sxv4/cpfuPODXVQ3igy0nuaNvbDdpVQqCQ0NJTY2luHDhzNu3DiGDx9OXFwcoaGhKJVKnE4nDQ0NlJSUeLq5gjDo1NXVceDAASwWi3vkVl8FsC6unq7q6mrsdpH5Xjjs1FNP5ZNPPuGdd95h1KhRPPTQQzzzzDNcffXV7m3WrFnDuHHjOP/88wG44oorGDduHC+++KJ7m9tvv51ly5axZMkSxowZw/r161m3bp27vJNGo+G9995jxowZZGZm8o9//INFixbxzjvvuPehUCj44osv8PPzY9q0aVx22WVccsklPPHEEwP02+ia6IkVBKThfampqeTn52MymcjLyyMpKYnw8J5nvPVGyTotvxsXy4fbS3j622ze/ONpnm5Sj2wvNPK3T/cAsOTsYcwd1XUtM09QKuRcNy2ZC06J4Z9fH+SD7SV8uL2Eb/ZWcPs5w1gwJXFAhzwLEl/qhe0OmUzmnhvrmoPU2NhIVlYWJpOJmJgYMWdWEPqA0+mkrKzM/fkRGBhISkpKv4x2ODLJZFVVlTuoFQSACy64gAsuuOCYjy9cuJCFCxeecD/33HNPhzqxRxo/fjybN28+4T4SEhL4/PPPT7jdQPLtb3VB6EMymYzk5GQiIiKkUiv5+e5yGIPB4rPSUcpl/JhVza8FRk83p9vK6izc9NZv2OxOzh1l4M9npXm6SV2KDNLw+LwxfHzLVEbHhtBobeOhz/dz/rM/8UtujaebN+T4ci9sd7kShDidTiorKz3dHEHweW1tbeTk5LgDWL1ez7Bhw/p1uL5rbmxVVZU7m6wgCCc2qILYpKQkZDJZh+XoKw9FRUVceOGFaLVadDodixcv7lDQF2DPnj1Mnz4df39/YmNjefDBB0UCjSFCJpORlJREZGQkIB0vg+XkMCEigHkT4wB4al2Wh1vTPZZWOze+9Ss1TVYyooN58rIxyOXeXUtzfEIYn946jUcvHU1YgIqsyiauenkLt/33N8rrLZ5u3pAw2Hphj8d1AlxbWyuSwwjCSWhububAgQM0NDQgl8tJTk4mPj6+30uIhIWFodFoaGtro6ZGXPAUhO4adN/sDz74IOXl5e7lvvvucz9mt9s5//zzMZvNbNy4kXfffZePPvqIO+64w71NQ0MD55xzDjExMWzbto3nnnuOJ554gqeeesoTb0fwkISEBPfJYUlJiXvSvK+7dWYaKoWMX3Jr2ZRb6+nmHJfT6eSvH+1mb2kD4Vo1Ly+YQIDaN2ZAKOQyrjwtge/vnMGCKYnIZfD57nLOemID//4+B2ubmPvUn4ZCL6yLKzmMw+GgqqrK080RBJ9jt9spLS3l4MGDtLa2otFoGDFixIBNJ5LJZO7zjcrKStFpIgjdNOiC2KCgIHdWLoPBQGBgoPuxtWvXsn//ft5++23GjRvH2WefzZNPPsnLL79MQ0MDAP/5z39oaWnh9ddfZ9SoUVx66aXce++9PPXUU+KDZYiJjY11ZwssLy+nuLjYwy06eXFhAVx+ajwAT6/L8upj+oUfcvlsVxlKuYyVV48nLsz3aviGBqh58OJRfPbn05mYGIbFZufxbw4x5+kf+f6gCDj6w1DqhXVxnQCL5DCC0DO1tbXs27ePiooKnE4noaGhZGRk4O/vP6DtiIiIQKVS0draitHoO9N9BMGTfKNbowcee+wxHnroIeLj45k3bx533XUXarVUhmPTpk2MGjWKmJgY9/Zz5szBarWyfft2Zs6cyaZNm5g+fXqHBBlz5sxh2bJlFBQUkJyc3Ok1rVYrVuvhTKSuYvVtbW1eMbzL1QZvaIuviYiIwG63u3tjrVYrCQkJ/T68qD/deHoS7/9awtYCIxsOVTIttXNPlaePmfUHq3hirZQq/h8XjGB8fLBPH7/DIgP47/UTWbOrnMe+yaKgtpnrXt/GWcMjufe84SSG+16AfiRPHy9Hqq6uprm5GaVSSXCwbx833aXValEoFFitVsrLyz1afL67vOmYEXxDXx4zTU1NFBcXY7FIUzzUajXx8fHuKgWemJsaHh5OaWkpxcXFBAUF+fR5hrfwps+ZtrY2Tzdh0BlUQexf/vIXxo8fT1hYGFu3bmXZsmXk5+fzyiuvAFBRUdHpyz0sLAy1Wu2+cl9RUUFSUlKHbVzPqaio6DKIffTRR3nggQc6rV+/fr275p83WLdunaeb4LMaGhrcQ/WCgoLQ6/U+/QUzWSfnxwo5yz/8ldtH2TnWW/HEMVPRDE/tVeB0ypgW5SCkeg9ffrlnwNvRH1TAnRnwTYmcHypkfHeomh+zqpgV4+TsWAdqhadbeHI8/RnjdDopLCykra2NyMjIIVV6xvUZpVQqSUhI8Jke6P44ZlzBvJ+fn7uXWhg8TuaYsdls1NbW0tTUBEiVCcLDwwkJCaGoqKivmtgrdrudwsJCHA4H+/bt6zCSUDg5nv5uAsR8537g9UHs8uXLuwwQj7Rt2zYmTpzIkiVL3OtOOeUUwsLC+MMf/sBjjz3mnhfVVeDhdDo7rD96G9eQy2MFLcuWLWPp0qXu+6WlpWRmZjJr1iyvKF5ts9lYt24d55xzTr9m2BvsTCYTBQUFOJ1OgoODSUlJ8ZkTxaNNbLRy1lM/UdDkIDD9VKYPi+zwuKeOmbpmG79/aTNWu4VJyWG8fO2EQVme5lIgp6qJh748yC+5Rr4plbGnKYB75g5j7sgon7tA4i2fMdXV1URHR6NUKhk1apTP/n/2htPpZO/evdhsNhISErzqAmpX+uuYsVqtHDp0iMTERABGjBhBQIBvj3QQJCdzzDgcDioqKqisrCQ+XppSExERQWxsLEql95wKu0r7+Pv7k5GR4enm+Dxv+W4CKTYQ+pb3/Ocew2233cYVV1xx3G2O7jl1mTx5MgA5OTlERERgMBjYsmVLh21MJhM2m83d22owGNy9si6uHrhjDdHSaDQdhh+75tcqlUqP/9McSaVSeVV7fI1er0ej0ZCXl0dzczOFhYWkpaX55IlybLiKBVMSefmnfJ79Po9ZmdFdBk4Decy02R0s+eA3iowW4sL8WXnNRAL81APy2p6QERvGf26YzDf7Knjo8wOU1llY/N5uEiMCuHRcHL8bF0tChG+dfHvyM8bpdFJbW+vuiRyKNVPj4uIoLi6mtrYWg8HgExdD+vKYsdlsFBQUALgDk7q6OkJCQvpk/4J36OkxU1tbS2lpKTabDYVCQVBQEPHx8QM+77U7YmNjMRqN2Gw2LBYLwcHBnm7SoOAN57/edLFksPD6s2+dTseIESOOu/j5+XX53B07dgC4i0dPmTKFvXv3Ul5e7t5m7dq1aDQaJkyY4N7mxx9/7FB2Z+3atcTExBwzWBaGjpCQEHfg2tjYSFZWls8mUrlpeioBagW7S+pZf8DzSYYe+fIAG3NqCFAreHnBRMK1gzeAdZHJZMwdFc23S6ez+Kw0AtQKCmubefrbLM58/Hsue3ET724toqHF8/N5vN1Qykh8LDqdDqVSidVqpa6uztPNGVB2u53s7GysVisajYaUlBRACmDEXLShyWw2c/DgQQoKCrDZbGg0GlJTUxk2bJhXBrAgBTquEn9HnqsKgtCZ1wex3bVp0yaefvppdu7cSX5+Pu+//z433XQTF110EQkJCQDMnj2bzMxM5s+fz44dO1i/fj133nknixYtcl/tuuqqq9BoNCxcuJC9e/fyySefsGLFCpYuXeoTV7WF/hcUFMSwYcNQKBSYzWaysrJ88iRJF6jh2qlJgFQ31uHwXKbi97cVs/rnAqktl40lI3poXX32VytYOns4v953Nk9fPoYz0nXIZLC1wMg9H+9h4sPfctt/f+P7g1W02Qc+4Yi3G4oZibsil8vdJ8BHjygazBwOBzk5OVgsFlQqFenp6YSFhREQEIDT6RRz0YaY1tZW8vPzOXjwIGazGblcTmxsLJmZmYSGhnq6eScUFSVNKWlqanLP3RUEobNB802v0Wh47733mDFjBpmZmfzjH/9g0aJFvPPOO+5tFAoFX3zxBX5+fkybNo3LLruMSy65hCeeeMK9TUhICOvWraOkpISJEydyyy23sHTp0g5zXgVBq9UyfPhwVCoVzc3NHDp0qEPvva+48YwUtGoF+8sbWLvfMye92wuN/O1TKXHTkrOHMXfU0E3EEqBW8rtxcbx1/SR+uecs7jl3BOn6QFrbHHy+u5zrXt/G5EfX89Dn+9lbWu/VJZIGkuiFPUyv1yOXy2lubnZPbRnMnE4neXl5NDU1oVAoSEtLcw8l1+v1gDRXWvyvDH4Oh4Py8nL27dvnLlOj0+kYNWoUBoPBZy5uHfk5NpQuRglCTw2aAdrjx49n8+bNJ9wuISGBzz///LjbjB49mh9//LGvmiYMUv7+/gwbNozs7GxaWlo4dOgQw4YN86m5eGFaNX88PZnnvsvh6XXZzM40IJcP3IiDsjoLN731Gza7k3NHGfjzWWkD9treLjrEn5unp3LTmSnsK2vgo99KWLOzjJqmVl7dmM+rG/MZHhXEpeNjuWRcLFHBXU+rGOxEL2xHSqUSnU5HVVUVFRUVg35OXWFhIfX19cjlctLS0jokcQoPD6ekpITW1lbq6uoICwvzYEuF/mQ0GiktLXVfTA4MDCQ+Pt5nk3oZDAZqamqor6+nubnZZ9+HIPSnXn3bv/766zQ3N/d1WwTB5/j5+TF8+HA0Gg2tra0cOnSIlpYWTzerR244PYUgPyWHKhv5Ys/AzcGxtNq58a1fqWmyMsIQxBPzxgxoAO0rZDIZo2JDuP/CkWy+dxavXjuR80dHo1bIOVTZyKNfHWTKo+uZ/+oW/rezFEurb87R7i3RC9uZazhiY2MjZrPZ083pNyUlJdTW1iKTyUhOTu5UkkQmk7mHV7sSNAqDi2vea35+Pq2trajValJSUhg+fLhPB34ajYbw8HBA9MYKwrH0KohdtmwZBoOB66+/nl9++aWv2yQIPkWtVjN8+HD8/f2x2WwcOnTIpy7yhASouOF0KQnKM99mYR+AubFOp5O/frSbvaUNhGvVvLxgIlrNoBkY0m9UCjmzMqL499Xj2fa3s1nxu9FMTAzD4YSfsmv4y7s7mfjwOu78YBe/5NZ4dJ7zQBC9sF1Tq9WD/gTYVS4FIDEx8ZhzHSMjI93zC33pc1k4Plcm6iPnvcbExDBy5MhB0+PuqnFsMpl87uK4IAyEXn3jl5SU8Pbbb2MymZg5cyYjRozgscceG7RfloJwIiqVimHDhhEQEEBbWxtZWVk+lZDhutOTCPFXkVtt5rNdZf3+ei/8kMtnu8pQymWsvHo88eG+e8XcU0ICVFw1KYEP/zSVH+6cwV9mpRMf7o+51c6H20u46uUtnPHP73n8m4PkVvvOsdgTohf22FwnwHV1dYPuBLimpsZdczEuLu64f3uVSuUOcKurqweieUI/cs173bt3L7W1tYBU73XUqFGD7kKWv7+/uzyU64KNIAiH9eq/XaFQcNFFF/Hxxx9TXFzMjTfeyH/+8x8SEhK46KKL+N///ofDITJoCkOLUqlk2LBhBAYGuss9NDY2erpZ3RLsp+LGM6Xe2H+tz+6XDLgtNjtFtc28/2sxT6w9BMADF49kUooIPk5Wkk7LknOG8eNdM/ng5ilceVo8QX5KSuss/Pv7XGY9uYGL//0z//4+hx8OVVHV0OLziW5EL+zx+fn5uYO3wXSB2WQyUVhYCEiB+rHqtx/JleBJlNvxbY2NjRQVFVFeXo7D4UCr1TJixAiSkpI8XgO0v7hKRNbW1vpk8khB6E8nPX5Pr9czbdo0Dh06RFZWFnv27GHhwoWEhoayevVqZsyY0QfNFATfoFAoSE9PJzc3l4aGBvLz88nMzPSJItfXTk3i1Y355NeY+d+ucrpbRa/FZqeqwUplY4v0s6GFqkYrVQ0tHdY1tHQ8ebxmcgJXT0rs+zcyhMlkMk5NCufUpHDuv3Ak3x6o5OPfStmQVc2u4jp2Fde5t43QqsmIDiYzJpiM6CAyooNJjQxEpfCNYFD0wp6YwWCgrq4Oo9FITEwMarVv115ubGwkPz8fkLLOxsbGdut5gYGBBAQE0NzcTE1NjbuXWvAdFouFnJwc2traUKlUJCUluYfMD2ZarZagoCAaGxuprKwkPj7e000SBK/R6zPryspK3nrrLVavXk1eXh6XXHIJn3/+OWeffTYWi4X77ruPa6+91n3FVBCGCrlcTmpqKgcOHKClpYWioiJSUlI83awTCtQouenMFB796iDP/5DHn9OhyNiMyWKnssFKVWOL9LM9SK1saOkyOD0eP5WcqGA/zkjXcf+FI/vx3Qh+KgUXnBLDBafEUN1o5fPdZWwvNHGgvIH8GjO15lY25tSwMedwDU21Qk56VCAZ0cHtSxCZ0cGEBnhX8CN6YbvnyBPgqqoq4uLiPN2kXmtubiYnJwen00loaKi7/nt36fV6CgoKqK6udie+EnxDW1sbubm5OJ1OAgICGDlypE9VAThZBoOBxsZGampqiI6O9omL4oJwLDk5OeTm5nLmmWfi7++P0+ns9edxr/4TLrzwQr755huGDRvGokWLWLBgQYcrYv7+/txxxx08/fTTvWqUIPg6uVxOUlIShw4dwmQyYTQafeKq8YIpSbz8Uz4lJgt3b1XC1o3dep5GKQWnUcEa9MF+6IM07vtRQX7o29cHaZTi5NEDIoM0XDctmeumJQNSZuhDlY0cKG84YmmkydrGvrIG9pV1rC8aE+J3RGAr9d4mhgd4LJu06IXtPtcJcHV1NQaDwSdPgFtaWsjOzsbhcBAUFERycnKPP0dEuR3f5HQ6yc/Px2q1olariYqKGnIXrYKDg90jCaqqqoiJifF0k4QBUlpayt13381XX32FxWJh2LBhvPrqq0yYMAGAjz/+mJdeeont27dTW1vLjh07GDt2bKf9bNq0ib/97W9s2bIFlUrF2LFj+eqrr/D396egoICHHnqI7777joqKCmJiYrjmmmv429/+1mH0TlefuStXruTmm2/u1nupra3l8ssv57vvvkMmk5GdnU1KSgo33HADoaGhPPnkkz3+/fTq20yv17NhwwamTJlyzG2io6Pdw34EYSjSarVER0dTVlZGUVERgYGBXj+cz1+tYOk5w7j3kz3A4eDUFZTqgzXog9qD0/b1+mA/gv1EcOpL/NUKxsaHMjY+1L3O4XBSYrKw/4jAdn95AyUmC2X1LZTVt7D+4OEyJQFqBcMN0jDkYXot9Y1gdzjp75lpohe2Z448Aa6urnbPsfMVra2tZGdn09bWRkBAAKmpqb36m7vK7ZSXl1NVVSWCWB9RWlpKQ0ODe4RTUVGRp5vkEQaDgby8PKqqqoiKikKhUHi6SUI/M5lMTJs2jZkzZ/LVV1+h1+vJzc3tkIndbDYzbdo05s2bx6JFi7rcz6ZNm5g7dy7Lli3jueeeQ61Ws2vXLvfn6MGDB3E4HLz00kukpaWxd+9eFi1ahNls5oknnuiwr9WrVzN37lz3fVfise5YsmQJSqWSoqIiMjIy3Osvv/xylixZMnBB7PTp0xk/fnyn9a2trbz77rssWLAAmUxGYqKY7yYMbQaDgfr6esxmMwUFBQwbNszTTTqhqyYlcEZaGBt/+I7fX3iu1wfeQt+Qy2UkRASQEBHA3FGH5ww2tNg4WN6x1/ZgRSPNrXZ2FNWxo6iufUslb+T/wJyRBuaMNDA1VYda2fcBpuiF7bmjT4B9JfBva2sjOzub1tZW/Pz8SE9PP6mT98jISCoqKtzldny5juhQYDQa3Vl5k5KS8PfvbqaGwScsLAw/Pz9aWlqoqanpVkIzwbc99thjxMfHs3r1ave6pKSkDtvMnz8fgIKCgmPuZ8mSJSxevJh77rnHvS49Pd19e+7cuR0C05SUFA4dOsTKlSs7BbGhoaG9zimwdu1avvnmm07TWtLT03s99bRX32TXXXcd9fX1ndY3NjZy3XXX9aohgjAYyWQykpKSkMvl7nlpvsAQ7EeAsuvhI8LQEuyn4rTkcK6dmsT//f4U/nfb6ex7YA7fLj2TZ68cx59mpDI9XUeAwonRbOOdrcUsXL2NiQ+vY+l7O1m7r4IWm71P2iJ6YXsnNDQUjUZDW1sbNTU1J36CF3A4HOTk5NDS0oJKpSI9Pf2kh0KLcju+o7m5uUMWatFzfrhsVmVlpagA4sMaGxtpaGhwL1artcvt1qxZw8SJE5k3bx56vZ5x48bx8ssv9+i1qqqq2LJlC3q9nqlTpxIVFcX06dPZuPH4U8Xq6+u7nAJ32223odPpOPXUU3nxxRd7dByazeYuLxzW1NT0eo57r84AjjUJt6SkpEddy4IwFPj5+bmvPJWUlAy6mo3C0KNUyEnTB3HRmBjunjuCVxaM5+GJdt5YOIFrJicQGaShoaWNj3eUcuNb2xn/0Dpu/c9vfLarjCZr70uciF7Y3pHJZO6em8rKSq8vr+R0OsnNzcVsNrtLl/XViBBXuR2j0SjK7XgpVyInh8NBSEiImAPaLjw8HLVajc1mc9fIFXxPZmYmISEh7uXRRx/tcru8vDxWrlxJeno633zzDTfffDOLFy/mzTff7PZr5eXlAbB8+XIWLVrE119/zfjx45k1axbZ2dldPic3N5fnnnuu01zXhx56iA8++IBvv/2WK664gjvuuIMVK1Z0uy1nnnlmh7bLZDIcDgePP/44M2fO7PZ+jtSjy5rjxo1DJpMhk8mYNWtWh6uidrud/Pz8Dl3SgiBIIiMjqaurc5fdGTFihOjlFAYVhRympkYwfYSBBy4axW9FJr7aU8E3+yoorbPwxZ5yvthTjlop58z0SOaOMnBORhQhAd2bRSt6YU9OREQE5eXltLa2YjQavfYigCuRj2seZFpaGn5+fn22f1Fux7s5nU7y8vJobW1Fo9H0KonXYOW6GFVcXExFRQU6nU78bnzQ/v37O5QHO1YvpMPhYOLEie5Acdy4cezbt4+VK1eyYMGCbr2Wq6f0pptuco+UHTduHOvXr+e1117rFECXlZUxd+5c5s2bxw033NDhsfvuu89925U86sEHH+yw/ngef/xxZsyYwa+//kprayt//etf2bdvH0ajkZ9//rlb+zhaj4LYSy65BICdO3cyZ84cAgMD3Y+p1WqSkpL4/e9/36uGCMJgl5SUxP79+2lubqa8vFxcXRYGLYX8cL3av1+QwZ7Ser7aW8HXeyvIrzHz7YFKvj1QiVIuY0pqBOeOiuaczCgig449pEj0wp4cuVyOXq+ntLSUiooKr/0dFhcXYzKZkMlkpKamotVq+/w1RLkd71VSUkJjYyMKhYK0tDSRwOgoOp3OfTHKZDL5RNUDoaOgoCCCg4NPuF10dDSZmZkd1mVkZPDRRx91+7Vcify62s/RSdLKysqYOXMmU6ZMYdWqVSfc9+TJk2loaKCysrJbc7QzMzPZvXs3K1euRKFQYDabufTSS7n11lt7nXCwR0Hs/fffD0gn45dffnmfXh0VhMFOpVKRkJBAXl4e5eXlBAcHd7gQJAiDkUwm45S4UE6JC+Wvc4ZzqLLR3UN7sKKRn7Jr+Cm7hvs+3cPEpHDOHWVg7igD0SGHk7iIXti+4Ups1NLSQl1dXYcsl96grKzMPVc1OTm5Wyd6vREWFjYky+24kgJZrVZiY2O97hyutrbWnTciKSnJ69rnDeRyOVFRUZSWllJeXi6C2EFs2rRpHDp0qMO6rKysHiXNTUpKIiYmpsv9nHvuue77paWlzJw5kwkTJrB69epufcfu2LEDPz+/Hn2PGAwGHnjggW5vfyK9ypJw7bXX9lkDBGEoCQsLIyIigtraWgoKCsjMzBQn5MKQIZPJGGEIZoQhmCXnDCOvuomv90k9tLtL6tmab2RrvpEHPtvPmPhQzh1l4NxRBgIczaIXtg8oFAp3IFtRUeFVQWxVVRXl5eUAJCQk9GtgKZfLh0y5HYfDQV1dHdXV1TQ1NbnXNzY2kpKS0m8XCnrKbDa7EznFxMR41bHpbbz9YpTQN5YsWcLUqVNZsWIFl112GVu3bmXVqlUdekmNRiNFRUWUlZUBuINVg8GAwWBAJpNx1113cf/99zNmzBjGjh3LG2+8wcGDB/nwww8B6eLhjBkzSEhI4IknnuiQ9M413eKzzz6joqKCKVOm4O/vz/fff8/f/vY3brzxxm4nZVq9ejWBgYHMmzevw/oPPviA5ubmXsWW3Q5iw8PDycrKQqfTERYWdtzhN0ajsccNEYShIj4+nsbGRqxWK8XFxaIUlTBkpUQGcsuMNG6ZkUaJqZmv90o9tL8WmthVXMfOghoe+XATCf42Lhyl5/pzTxMXfU6SXq+nsrISs9lMY2MjQUFBnm4SRqOR4uJiQApgIiMj+/01jyy3Y7FYBl35FovFQk1NDbW1tdjth7ODh4SEYLfbaWpqIjs7m7i4OI+Xa7HZbOTm5uJ0OgkNDfW5WsYDzZsvRgl959RTT+WTTz5h2bJlPPjggyQnJ/PMM89w9dVXu7dZs2ZNh6owV1xxBSCNnF2+fDkAt99+Oy0tLSxZsgSj0ciYMWNYt24dqampgFT6Jicnh5ycnE7lb1xJAFUqFS+88AJLly7F4XCQkpLCgw8+yK233trt9/N///d/vPjii53W6/V6brzxxv4NYp9++mn3l93TTz8t5pAIQi8pFAqSkpLIysqipqaG0NBQkdVbGPLiwgK44YwU/jgtiZziStZszWL97gL21NSR1wjPbrAQmjCMm2f0f4AzmKlUKnQ6HdXV1VRUVHg8iK2vr3fPzdLr9QMWwLjK7ZhMJqqqqgbFxUSHw4HRaKSmpgaz2exer1ar0el0REREoFarcTqdFBUVUVNTQ0lJCRaLhcTERI+c17kyUdtsNvz8/DrVwRS6FhUVRVVVlVddjBL63gUXXMAFF1xwzMcXLlzIwoULT7ife+65p0Od2J7u4+hasr1RWFhIcnJyp/WJiYmd5ud2V7eD2CMj5O78wgRBOLagoCCioqKorKykoKCAkSNHnnQNREHwZU1NTdTW1mIymbDb7cxMCWRmyijaZCo+z2rizd9q+L+vswjQqFgwJcnTzfVpUVFRVFdX09DQQHNzc5e1+waCxWIhLy8PhUJBeHg48fHxA/r6er0ek8mE0WgkNjbWZz+DzWYzNTU1GI1GdzZSmUxGaGgoOp2u05BhmUxGYmIi/v7+FBcXU1tbi9VqJSUlBZWqe9nC+0pRURFms1kkcuohpVKJTqdzD8MXQazg7fR6Pbt37+50oWrXrl29nibUq0/sE0XMCQkJvWqMIAwlMTEx1NfX09LSQmFhoXtohyAMFa2trdTW1rpPol3UajXh4eFERETg5+fHpPEQHHaQf3+fyz/+tw8/pYLLTh3YgGcw0Wg0hIeHYzQaqays7PLqeH9zZWlPTk4mJCTEIz1wvlxux263U1tbS01NDRaLxb1eo9EQGRlJRETECYNyvV6Pn58feXl5NDU1cfDgQVJTUwfsokZ1dTU1NTWAlMiru3PrBInrYlRjYyNms7lfMnkLQl+54oorWLx4MUFBQZx55pkAbNiwgb/85S/uYdA91asgNikp6bjDTo6cfyEIQtfkcjnJyckcPHiQuro6amtrRdIaYdCz2+2YTCZqa2s7JJqRy+XuxGdd9SrcOXs4LTYHr27M5+6Pd6NRybl4bGyn7YTuiYqKwmg0YjQaiYmJGdAAorq6mvz8fBwOB1qtlpSUFI9NUfK1cjtNTU3U1NRgMpk69LqGhYWh0+l63CMXHBzMiBEjyM3NpaWlhUOHDpGUlNTvya6amprc86BjY2PFlJpecF3sq62tpaKiQlwIF7zaww8/TGFhIbNmzXJfYHM4HCxYsMBdC7enehXE7tixo8N9m83Gjh07eOqpp3jkkUd61RBBGIoCAgKIiYmhtLSU4uJigoKCUKvVnm6WIPQpp9NJY2MjtbW11NXVuU++QRpaHxERQVhY2HGTNslkMu47P4MWm53/bCli6fu70CjlzB0lksD0RkBAACEhIdTX11NZWTkgI6ja2tooKCigvr4ep9NJQEAAaWlpHk3W5Qvldtra2ty9ri0tLe71/v7+6HQ6wsPDT2ootJ+fHyNGjCA/P5/6+nry8vKIjo7ut1rmra2t5OXl4XQ6CQsL86kecG9jMBjcn6uDMUGZMHio1Wree+89HnroIXbt2oW/vz+jR48+qXwEvfrUGzNmTKd1EydOJCYmhscff5xLL7201w0ShKEmKiqK+vp6mpqayM/PZ9iwYV7fGyAI3WGxWKitrcVoNGKz2dzr/fz8iIiIIDw8vEcXbWQyGQ9dPIoWm4OPfivhz+/sYNV8BTNH6Puj+YOewWCgvr6empoaoqOj+3U+ZENDAwUFBdhsNmQyGXFxcVRUVHh8DqQ3l9tpaGigpqaGuro6d5ZQuVxOeHg4Op2uT4ePKhQKUlNTKS0tpbKykvLyciwWC8nJyX16kcHhcLgTOfn7+4tETifJz8+PsLAwTCYT2dnZhIaGEhwcTFBQkMf/twShK8OGDWPYsGF9sq8+zWIwbNgwtm3b1pe7FIRBTyaTkZSUxP79+2lqaqKqqsrjJQ8Eobfa2towGo3U1tbS3NzsXq9UKt3DhU/m5Fsul/HPP5yCtc3O57vLuent7axeeCrT0nR90fwhJTAwEK1Wi9lspqqqitjYvh+e7XQ63YERSCfdKSkpXpVEyZvK7TidTqqqqqiuru4wTzwgIIDIyEjCwsL6LThxXVzw9/ensLCQuro6Dh48SFpaWp+NECoqKqK5uRmlUklqaqoomdUHoqOjaWxsxGazUV1d7a7zqdVqCQkJITg4mICAAHFxXBhwS5cu5aGHHkKr1bJ06dLjbvvUU0/1eP+9+hZpaGjocN/pdFJeXs7y5ctJT0/vzS4FYUjTaDTEx8dTWFhIaWkpwcHBYliQ4FOamprIzc2lubnZ3Wskk8kICQkhIiKCkJCQPjuJUshlPH35WKxtDtbtr+SGN37lzetP49Sk8D7Z/1BiMBjIzc2luroag8HQpwFSS0sLeXl57sRDkZGRxMXFIZfLO/TMe5o3ldspLi52ByGurM06nW5AM0i7Eqrl5uZisVg4cOAAqampBAYGntR+q6qqqK2tBSAlJUUkcuojrmGZjY2NNDQ00NDQQEtLC2azGbPZTFlZGQqFgqCgIHdQK6YtCQNhx44d7s/633777ZjnAL09N+hVEBsaGtrpBZ1OJ/Hx8bz77ru9aoggDHU6nY66ujrq6+vJz88nIyNDXDkVfEJZWRkVFRXU19ejVCoJCAhwDxfurx43lULO81eN48Y3t7Mhq5rrVm/j7RsmMTY+tF9eb7AKDQ3Fz8+PlpYWdyDbF6qrqykpKcHhcKBUKklKSvLq5D3eUG6ntLTUHcDGx8ej0+k81lOp1WrdCZ+am5vJysoiISEBna53Ix4aGxspKSkBIC4uTpSE6WNyuZyQkBD3/1hra6s7oG1oaMBut1NXV0ddXR0gXTgPDg4mJCSEwMBAMfRY6Bfff/+9+/YPP/zQ5/vv1af0kY2Cw3NK0tLSvGqIkCD4msTERPbv34/FYqGsrKxfhvcJQl+y2+3uoaKRkZHExMTg5+c3IK+tUSp4af4Erlu9jU15tSx4dQvv3DiZkTHeGyx5I4PBQEFBAVVVVej1euRyOU6nk/UHqogK9mN0XPd/n21tbe6hqCBlv01KShrw+qM95elyO5WVlVRUVADS90Bvg8W+pFarGT58OAUFBZhMJgoLC7FYLMTFxfXoAuuRiZzCw8PFdJkBoFar0el06HQ6nE4nzc3N7oDWbDZjtVrdQ49lMhlardYd1Pr7+4sL6EKfamtrw8/Pj507dzJq1Kg+22+vIs7p06f3WQMEQThMpVKRmJhIbm4uFRUV7qukguCtampqcDqd7iHxAx2s+KkUvHLtRBa8tpXthSbmv7qV926cTHqU6OnprvDwcMrKytx1e4NCw/nbJ3v56LcSZDK4dUYafzk7HZXi+L2CRydvio2N9amAxVPldmpqaty9lLGxsV4RwLrI5XJSUlIoLy+nrKyMqqoqWlpaSE5O7lanhSuRU1tbGwEBAR4dqj1UuYJUrVZLdHQ0dru9w9Bjq9VKU1MTTU1NlJWVoVQqCQoKIjg4WAw9FvqEUqkkMTGxz0uw9iqIXbNmTbe3veiii3rzEoIwZIWGhqLT6aipqSE/P5/MzEwx1EfwSk6n090L68mholqNktXXncrVL29hT2k9V72yhfdvmkKyru+ytw5mMpmMqKgoiouL2Z9XxNO/HmJncT0yGTid8Pz3OWzMqeHZK8aRENF5bmZXyZuSk5MHdB5nX/BEuZ26ujoKCwsBKVO9t5abiY6Oxt/fn/z8fBoaGtwJn0406qKwsFAkcvIyCoWC0NBQQkNDAbBare6AtrGxkba2NkwmEyaTCZD+n8PDwzEYDKKHVui1++67j2XLlvH2228THt43+St6FcRecsklyGQyd/IOl6PXyWSyPo+6BWEoiIuLo7GxEavVSnFxsShDIHglk8mEzWZzX7n3pGA/FW/+8TSufHkzBysaufrlzbx30xTiw30rkPIUnU7HjzuzeGDNHuoUYYSHh/Pvq8ZTZ2ll2cd72Flcx3nP/sRDl4zkd+Pi3M9raWkhPz/fnYn6yORNvmagy+00NDSQl5cHSL//uLi4EzzDs0JDQxkxYgQ5OTlYrVYOHjxIcnLyMS9gVVZWYjQakclkpKamih49L6XRaIiMjCQyMhKn04nZbO4w9LilpYWysjJAupghCL3x7LPPkpOTQ0xMDImJiZ2qFPz222893mevgti1a9dy9913s2LFCqZMmYJMJuOXX37hvvvuY8WKFZxzzjm92a0gCO0UCgVJSUkcOnSI2traDldNBcFbuHre9Hq9ezikJ4Vp1bx9wyQuf2kTudVmrm7vkTWEDMwcXV/2xZ4K7vmyEHNTK4mRLbxz6zR3T/bY+FCWvLeTbQUmlry3iw2HqnnoklFYm+opLi52J29KTEz0+c+pgSq3Yzabyc3Nxel0EhYWRkJCQr+8Tl/z9/cnIyOD3NxcmpqayMnJIS4urtOw8YaGBvdnQnx8vJgW4yNkMhmBgYEEBgYSExOD3W6nurqa0tJSysvLCQsLG7CcB8LgcqwO0JPRqyD29ttv58UXX+T00093r5szZw4BAQHceOONHDhwoM8aKAhDVWBgIAaDgYqKCgoLC9FqtV6fHEUYOhobG2lubkYul3vVHD5doIb/3DCZy17aRJGxmate2cx7N04hMkiU8+iKw+HkqXVZPP99Dk51EKcmObhj9jAi1IdHUcWFBfDOosm88EMu/1qfzSe/FbNxxz6WnBnLCEOwzyRv6o6BKLdjsVjIzs7G4XAQHBxMcnKyTw3TVCqVDBs2jKKiIvd8XovFQkJCAnK5HKvV2qGHOTIy0sMtFnpLoVBgMBhoamqivr6ewsJChg8f7ulmCT6kubmZu+66i08//RSbzcasWbN47rnn+uS8oVfjfXJzc7scPhISEkJBQcHJtkkQhHYxMTH4+/u7M34Kgrdw9cLqdDqvy0pvCPHjv4smERPiR161mfmvbsFkbvV0s7xOk7WNm97ezvPf5wBw84x0nvvjDAI1SnemXBelQs7iWemsvnok4a2VlFbWcvdHe/gmv5WU1LRBEcC66PV6AIxGI21tbX26b6vVSnZ2Nna7Ha1WS2pqqk8FsC4ymYzExETi4+ORyWTU1taSlZWF1WolNzfX/f58pYdZOD7XBYqmpiZ3GShB6I7777+f119/nfPPP58rr7ySb7/9lj/96U99su9eBbGnnnoqt99+O+Xl5e51FRUV3HHHHZx22ml90jBBEKQTBddV+vr6empqajzdJEHAYrFQX18PHD7h9zZxYQH8d9Fk9EEaDlY0suC1rdRbbJ5ultcoNjbz+xd+Yd3+StQKOU/OG8Oy8zKINkhZeRsbGzGbze7tnU4nJSUlaFtqeOayU5g5MhZ5WCyrfjVy5cubKauzePDd9C1XuR2Hw9Gnn7k2m43s7GxsNhv+/v6kpaX55NzhI+n1etLT01EoFJjNZvbu3YvFYkGlUvlsgC50plar3SX/SktLaW0VFwWF7vn444959dVXWbVqFf/617/44osv+PTTT/skZ1KvPj1fe+019zCbtLQ00tLSSEhIoLy8nFdeeeWkG9WVRx55hKlTpxIQEHDMOTdFRUVceOGFaLVadDodixcv7vSPtmfPHqZPn46/vz+xsbE8+OCDncZnb9iwgQkTJuDn50dKSgovvvhiv7wnQegO17EKUFxcjNVq9XCLhKGuqqoKkBK9aDTeO0w3Saflv4smEaFVs6e0nutWb8Vs7dueNV+0Oa+Wi57fyKHKRiKDNLx702R+P0FKKqRWq4mIiABw98a2tLRw8OBBd+97UqyBt5b+jqevmoRWrWBrvpFz//UTX+8t7/oFfZDr4kx1dXWfzOGy2+1kZ2djtVrRaDSkp6d73QiG3goKCiIjI8M9V9KVyGkw9c4L0nxxrVaL3W6nqKjI080RfERxcTFnnHGG+/5pp52GUql0Jws7Gb0KYtPS0ti9ezdffPEFixcv5s9//jNffPEFe/bsIT09/aQb1ZXW1lbmzZt3zC5ou93O+eefj9lsZuPGjbz77rt89NFH3HHHHe5tGhoaOOecc4iJiWHbtm0899xzPPHEEzz11FPubfLz8znvvPM444wz2LFjB/feey+LFy/mo48+6pf3JQjdERUVRVBQEA6Hg/z8/D6dGC8IPWGz2aitrQXw2nIgR0rTB/HW9ZMI8VfxW1Ed17+xDUvr0M2a/58thVzzyhZMzTZGx4aw5rZpjE/omIXXlaSnrq6OsrIyDhw40KFMSmJiIgqFgt9PiOOLxWdwSlwI9RYbN7/9G8s+3k1zq+9fKAgLC0OpVLrL7ZwMh8NBTk6Ou4cyPT190AV4Go2GESNGEB0dTVpaWqfMo4Lvcw0hd40Mc5XgEYTjsdvtnTKTK5XKPpmq0aMg9rzzznMPIZPJZGzdupUFCxbwl7/8hXPOOQej0UhmZuZJN6orDzzwAEuWLGH06NFdPr527Vr279/P22+/zbhx4zj77LN58sknefnll2loaADgP//5Dy0tLbz++uuMGjWKSy+9lHvvvZennnrKHRS8+OKLJCQk8Mwzz5CRkcENN9zAH//4R5544ol+eV+C0F1JSUnuIVuuHhFBGGiunimtVuszJ6qZMcG8+cfTCNQo2Zxn5Ka3t2NtG1qBrM3u4B//28vfPtlLm8PJhWNi+ODmKUSHdM6+6+fn5x7xVF5ejsPhICgoiMzMzE4joZJ0Wj68eSp/mpGKTAbvbC3mguc2sre0fgDeVf9xldsBTmoOoNPpdGfyVSgUpKene/XohZOhUCiIiYkhODjY000R+om/v7+7zE5RUVGfzxkXOiotLeWaa64hIiKCgIAAxo4dy/bt292Pf/zxx8yZMwedTodMJmPnzp1d7mfTpk2cddZZaLVaQkNDmTFjBhbL4SkgJpOJ+fPnExISQkhICPPnz+908a47o1274nQ6WbhwIZdeeql7aWlp4eabb+6wrjd6FMR+8803HYYyPvbYYxiNRvf9trY2Dh061KuGnKxNmzYxatQoYmJi3OvmzJmD1Wp1/8E3bdrE9OnTO3yBzJkzh7KyMndCqk2bNjF79uwO+54zZw6//vorNpuYTyV4jlqtJj4+HoCysjJ3XUZBGCgOh8N9Qn90SQ1vNyY+lNXXnYq/SsGPWdXc9t8d2OwOTzdrQJjMrSx4dStvbpKSw901ZzjPXjEWP5XimM9x9bLLZDJiY2MZNmzYMXsP1Uo5d88dwX+un0RUsIa8ajOXvvALr/yUh8Phu6NGIiMj3fODjzzh6y6n00l+fj4NDQ3I5XLS0tL6rWSPIAwUg8GAn58fbW1tXlFabbAymUxMmzYNlUrFV199xf79+3nyySc7XEg0m81MmzaN//u//zvmfjZt2sTcuXOZPXs2W7duZdu2bdx2220d5uNfddVV7Ny5k6+//pqvv/6anTt3Mn/+fPfj3RnteizXXnster3eHSCHhIRwzTXXEBMT02Fdb/RoQsbRQxi9aUhjRUVFp5OqsLAw1Gq1e15PRUUFSUlJHbZxPaeiooLk5OQu9xMVFUVbWxs1NTVdFnq2Wq0dgvvGxkZACuq9IfB1tcEb2iKcnODgYLRaLfX19WRlZZGZmdkviTPEMSN0pbq6mpaWFtRqNVqtttNx4u3Hy9jYIF66Ziw3vLWDdfsr+cs7v/HUvFNQyAdv8pnsyiZu+s8Oik0WtGoFT/xhNGdn6E/Yg6JWq0lLS0OhUKDRaLr1tz01MYTPbp3C3z7dz7oDVTz8xQE2HKrisUtHdSpx5CvHjFarpa6ujtLS0h6X23GVoJHJZCQlJXX79yh0zVeOmaEgNjaWQ4cOUVlZSVBQkNf2vnvTMdPTXuvHHnuM+Ph4Vq9e7V53dAzjCjSPVxlmyZIlLF68mHvuuce97sipnwcOHODrr79m8+bNTJo0CYCXX36ZKVOmcOjQIYYPH+4e7VpcXOzuLHzyySdZuHAhjzzyyHH//ke2v695NKvA8uXLeeCBB467zbZt25g4cWK39tfVybzT6eyw/uhtXIF4T7c50qOPPtrl+1i/fr1X1U9ct26dp5sg9AG73U5hYSEOh4ODBw/265V9ccwILk6nk6KiImw2GzqdrsvEHr5yvFyXJuOVQ3K+3FtJdeU3XJXqYDDGsXtNMt7MlmO1y4jQOLlhuJXW/F/5Mr9/X/f8EAhNlvFpgZyfcmqZ/fQPXJXqYGRY5wvf3n7MWCwWSktLkcvl7rnA3VFbW+ueM2gwGDpUcxBOjrcfM0NFdXU19fX1bNmyhfj4eK/OtO0Nx0xPM52vWbOGOXPmMG/ePDZs2EBsbCy33HILixYt6vY+qqqq2LJlC1dffTVTp04lNzeXESNG8Mgjj3D66acDUk9tSEiIO4AFmDx5MiEhIfzyyy8MHz78hKNdZ86c2aP31ld6FMTKZLJOgdzJ9ALddtttXHHFFcfd5uirDsdiMBjYsmVLh3UmkwmbzebuWTUYDJ1q37mybJ5oG6VS6c7YeLRly5axdOlS9/3S0lIyMzOZNWuWO6usJ9lsNtatW8c555wz6JJJDFV5eXnU1dVhMBg6fKj0FXHMCEerq6sjOjoauVzOKaec0uGExdeOl/OAU/ZXsvi93WyrlpOSmMDSs9MIC1ANipIgTqeTVT8V8MrmbJxOmJQcxrOXjyFcqz7xk/vI+cB1VU0sfX83ByubWHVQwbVTErjrnHQ0KoVPHTMHDhzAYrEQExPTrWRmlZWVlJaWAlJ9TW+6mO3LfOmYGQrsdjv79+/HZrOh1+uJi4vzdJM68aZjxvWZ0NjY6M7VA1JStK7myefl5bFy5UqWLl3Kvffey9atW1m8eDEajYYFCxZ06zXz8vIAqdPwiSeeYOzYsbz55pvMmjWLvXv3kp6eTkVFRZel8vR6fYeRrCca7eoJPR5OvHDhQvcv2zUx15Xco6elP3Q6XZ99uE+ZMoVHHnmE8vJy95DftWvXotFomDBhgnube++9l9bWVnemrLVr1xITE+MOlqdMmcJnn33WYd9r165l4sSJx/wHOPoAdB2cSqXS4/80R1KpVF7VHqH3IiIiaGpqcme77C/imBFcjEYjSqUSg8FwzMQ0vnS8nD8mjjanjNvf28l7v5bw3q8lhPirSNZpOy1JOi2BGt8oh9Jis3P3x7v5306pfMHVkxJYftFIVIqB7yXJjA3j09tO57GvD7L65wLe2FTElnwTz105jqRwqRyLLxwzsbGxFBQUUFdXR1xc3HEvdNTU1FBZWYlSqSQ2NtYnMnj7Gl84ZoYCVy3gnJwcjEYjer3ea5P9ecMx4yqpdXQC3Pvvv5/ly5d32t7hcDBx4kRWrFgBwLhx49i3bx8rV67sdhDrcEh5H2666Sauu+46937Wr1/Pa6+9xqOPPgr0biRrV9sMtB59K1977bUd7l9zzTWdtunuL7anioqKMBqNFBUVYbfb3Rm40tLSCAwMZPbs2WRmZjJ//nwef/xxjEYjd955J4sWLXKP1b7qqqt44IEHWLhwIffeey/Z2dmsWLGCf/zjH+4/ws0338zzzz/P0qVLWbRoEZs2beLVV1/lnXfe6Zf3JQi94TqmzWYzdru920PcBKE3zGYzTU1NyGSyLq/Y+qqLx0ojZR7/5hAlJgv1Fhs7i+vYWVzXaVt9kIYknZaUIwLbFJ2WhIgANErv+P+rqG/hprd+ZVdJPQq5jOUXjWT+5J7N4+xrfioF9184kjPTI7nzg10crGjkguc2cu+5wwnxnrQaxxUWFkZJSQmtra3U19cfs1Z9XV0dhYVS8qyoqCgRwAqDXkhICOHh4RiNRgoLC8nIyBgUo1n60/79+zuM0jzWReHo6OhOAW9GRkaPSn66OvW62o9rSpDBYOiy4kV1dXWHUaonGu3qCT0KYvtzcu6J/OMf/+CNN95w3x83bhwA33//PTNmzEChUPDFF19wyy23MG3aNPz9/bnqqqs6lMYJCQlh3bp13HrrrUycOJGwsDCWLl3aYShwcnIyX375JUuWLOHf//43MTExPPvss/z+978fuDcrCCegVqvx8/OjpaWFhoYGwsLCTvwkQegl1xdceHi4x69m97WLx8Zy8dhYLK12Co1m8qvN5NdKPwtqzeTXmKlpaqWq0UpVo5Wt+cYOz5fLICbUn+T2oDapPchN0QUSG+Y/YEmjdhbXceObv1LVaCU0QMULV49naqr3DGOdOULPV7efwZ0f7ObHrGru/+wAo8PkjJrSTFpU7zJTDhRXuZ3y8nKqqqq6DGIbGxvdQ/d0Op1XDq0UhP4QHx9PQ0MDFouFyspKcfHmBLqbCGvatGmdKr5kZWX1KMFcUlISMTExXe7n3HPPBaQRqPX19WzdupXTTjsNgC1btlBfX8/UqVPd25xotKsn+Mb4KOD111/n9ddfP+42CQkJfP7558fdZvTo0fz444/H3Wb69On89ttvPW2iIAyo4OBgEcQK/c5qtboT1PhaWZ2e8FcrGGEIZoSh88lFQ4uNghopoM07IrjNrzbTaG2jxGShxGThp+yOiTtUChkJ4QFEh/gTEqAi1F9FaICKEH8Vof7qI9ap3euPV/bmWD7ZUcLdH+2htc1Buj6QV66dSGKE9w3r0wf58frCU1n9SwH/99UB9pjkzH5mI+efEsPN01MYGeO9wWxkZCQVFRXucjtHJtQzm83k5OTgdDoJCwsjISHBgy0VhIGlVCqJj48nPz+fsrIyQkND8fPz83SzfN6SJUuYOnUqK1as4LLLLmPr1q2sWrWKVatWubdxjVAtK5Omj7iCVYPBgMFgQCaTcdddd3H//fczZswYxo4dyxtvvMHBgwf58MMPAalXdu7cuSxatIiXXnoJgBtvvJELLriA4cOHA3RrtKsn+EwQKwhCR8HBwVRVVXVIECAIfc2V/C44OHjI1rgM9lNxSlwop8SFdljvdDqpNbe6A1pXD25+jRToWtsc5Fabya02d/u1NEo5oQFHB7ntgW+Auv2n9HhogIrPdpfx0gapB/DsDD1PXz6WID/v7S2Xy2Vcf3oypyaEcPd/f+ZAnZzPdpXx2a4yzhwWyZ+mpzI5JdzrhiSqVCpCQ0MxmUxUVVW5e0NaWlrIycnB4XAQHBxMcnKy17VdEPqba0hxfX09hYWF7uBH6L1TTz2VTz75hGXLlvHggw+SnJzMM888w9VXX+3eZs2aNe65roA7We6R82xvv/12WlpaWLJkCUajkTFjxrBu3TpSU1Pdz/vPf/7D4sWLmT17NgAXXXQRzz//vPvx7ox29QQRxAqCjwoKCkImk9Ha2orVaj3mvApB6C273e4uCzCYe2F7SyaToQvUoAvUcGpSeIfHHA4n5Q0t5FebqWmyUtfcSp3FRl2zjXqLzX2/3nXfYsPucGJtc1DZYKWyoWeJEm+Zkcqds4cj95FaQRnRQdyc4SB53DRe+bmQz3eX8WNWNT9mVTM2PpQ/zUjlnIwor3o/er0ek8mE0WgkNjYWh8NBVlYWbW1taLVaUlNTRQArDFkJCQns27ePpqYmqquriYyM9HSTfN4FF1zABRdccMzHFy5cyMKFC0+4n3vuuadDndijhYeH8/bbbx93H90Z7TrQRBArCD5KLpcTGBhIY2Mj9fX1gyrhzslobm5Go9GIZFd9oLq6GofDgb+/v9cWs/dWcrmM2FB/YkO713vtdDppsrYdEeTaqLO0uu+7A99mmzv4rbO0opTL+evc4e4kVb4mIzqIZ68cx52zh/PyT3m8/2sxO4vruOmt7aRGarlpeiqXjI1FrfR8DcrAwEACAgJobm6moqKCuro6bDYb/v7+pKWleXWdTEHob2q1mtjYWIqLiyktLSU0NHTQ5VAQvIsIYgXBhwUHB7trjokgVqplVlpaikwmIzg4mJCQEPFF2ktOp7NTHW2h/8hkMoL8VAT5qYj3dGM8ICEigIcuGcXiWem8/ks+b24qJLfazF8/3M3T67K4/vRkrjwtAa2HSx3p9XoKCgrcyc7UajXp6enu8hmCMJRFRkZiNBoxm80UFRV1GLIqCH1NXDYUBB/m6h1rbGzE6fSRehX9qLq6GpACsPr6eoqKiti9ezcHDx6koqICi8Xi4Rb6DqPRiM1mQ6VSER4efuInCEIfiAzScNecEfxyz1nce94I9EEayutbePiLA0z9v+94au0hapt6NtS6L4WFhbkDVpVKxbBhw8RFMkFoJ5PJSExMRCaTUVdX504KKAj9QQSxguDDAgICUCqVOBwOzObuJ48ZjBobG2ltbUWhUJCRkUFsbKy78LrZbKa0tJT9+/ezd+9eSkpKaGpqEoH/cbh6mvR6vZjnJwy4ID8VN56Zyk93z+T/Lh1Nsk5LvcXGs9/lMO2x71i+Zh8lpuYBb5dcLicuLo7AwEDS09NFLgJBOIq/v7+7zE5RURFtbW0ebpEwWInxL4Lg44KDgzEajTQ0NBAYGOjp5nhMbW0tIPWUBAQEEBAQgMFgwGazUV9fT11dHQ0NDVitViorK6msrESpVLqHHAcHB4s5be1cNf9c9TEFwVM0SgVXnJbAvInxrN1XwcoNuewuqef1Xwp4a3MhF42J4ebpqQw3BA1YmyIiIoiIiBiw1xMEXxMdHY3JZKKlpYWSkhKSkpI83SRhEBJBrCD4OFcQW19fT0xMjKeb4xEOh8M9bOnok0uVSoVOp0On0+FwONwBbX19PW1tbdTW1lJbW4tcLu8wj3Yoz3Fz9cLqdDqRIEvwCgq5jHNHRzN3lIFfcmt5cUMuP2XX8MmOUj7ZUcqsEXr+NCOViUli6LsgeJpMJiMpKYmDBw9SW1tLeHi4SA4o9Lmhe5YmCIOE64uhubmZtra2IRl8mUwmHA4HGo3muL3RcrmcsLAwwsLCpGywTU3U1dVRV1dHa2ur+3ZhYSGBgYGEhoYSEhIypAq3WywWd+1hkSxM8DYymYxpaTqmpenYU1LPixty+XJvOesPVrH+YBUTE8P404xUZg7Xe1V5HkEYarRaLXq9nqqqKoqKisjMzBSjnYQ+NfTOdgVhkFGpVPj7+2OxWGhsbCQsLMzTTRpwRqMR6NwLezwymYygoCCCgoKIj4/HYrG4g9jm5maamppoamqipKQEPz8/QkNDCQ0Ndc+zHaxcvbBhYWFivp/g1UbHhfDvq8eTX2Nm1Y+5fLS9lF8LTVz/xq8MjwripukpXDgmBpVCnDgLgifExMRQV1eH1WqlrKyMuLg4TzdJGETEJ7sgDAKu3lhXD9pQ0tra6n7fJ5NF19/fn+joaDIyMhg9ejTx8fEEBwcjk8loaWmhoqKCgwcPsmfPHqqqqnA4HH31FryGzWZzXxAQZXUEX5Gs0/Lopaew8e6Z3DQ9hUCNkkOVjSx9fxczHv+B1zbmY7aK5DKCMNAUCgUJCQmAdIF0qCegFPqWCGIFYRBwBbH19fUebsnAcwVdgYGBfdZzqFar0ev1pKenM2bMGJKTkwkLC0OhUNDa2kpxcTG7d++mrKxsUGVerKqqwul0EhgYOOh7nIXBRx/sx7JzM/j5nrO4a85wdIEaSussPPj5fnd5nhoPlucRhKEoJCTEfYG5sLBwwKsCtLa2DujrCQNHDCcWhEEgMDAQuVyOzWajpaVlSM3hdGUl7q9soQqFgvDwcMLDw3E4HNTW1lJZWYnVaqW8/P/Zu/PwqMqz8ePf2bOvk8kkISEJhCWAEAgKRFlEAZWqPy1KVRAVrFVeXgFrRW1BVNQKfam2gigErVZrBS1uCKKAaBBEQFkTshCy75msk9l+f8RMGRMggSST5f5c11xkzpx5zj3hJDn3eZ7nfvIpKChAr9cTGhrarYff2u125zq70gsrujN/Tw0PTerPfVfGsPmHXF77OoPMkhpe+vIUr+7O4LbESOZdFUtUsJe7QxWiV4iMjHRWvS8sLHQuwdNR6urqKCsrc87HbVrzXPQsksQK0QMolUp8fHwwmUyYTKZek8TW1NRQX1/vLNjU0ZqWnNHr9VRUVDiHRxUXF1NcXExAQABGo7Fb9mKWlJRgs9nQ6XT4+/u7OxwhLpmHRsUdV0Rx++jG5XnW7krncE4l/9h7mre/O831w8J4YEI/hkbI+S5ER1Kr1URGRpKZmUleXh4BAQHtfp1SX19PWVmZc2kfAKvVilKppLa2Fi8vuWnV00gSK0QP4efn50xie0tV2aZe2ICAgE5dCkahUDirHFdXV1NQUOBcuqeiogIfHx+MRmO3SQYdDgdFRUVAYy+sQiFVXUXPcfbyPHszynh1dzo7Txbz8Y/5fPxjPlf21/PbCbFc2V8v574QHSQoKIjS0lJMJhOnT59m4MCBl9ym2Wx2Jq51dXXO7QqFAn9/f3x8fMjLy+s2f4tF20gSK0QP0TQvtqqqCrvd3uNL2TscjouqStzefHx86N+/v7P4U1lZGdXV1Zw6dQoPDw9CQ0MJDg7u0hfHTdUj1Wq1W7+XQnQkhULB2H7BjO0XzPF8E+t2Z7DlcB57TpWw51QJQ8L9+O2Eflw/1IhaKhoL0e769u3L0aNHqa6upri4mJCQkDa3YTabKS8vp7y8nNraWud2hUKBn58fgYGBzhvbFoulx18L9WaSxArRQ3h6eqLRaLBYLNTU1ODr6+vukDpURUUFNpsNjUbTJT6rh4cH0dHRREREUFRURHFxMfX19Zw+fZq8vDwMBgMhISGd2mPcWk3L6oSEhMgffNErDA7z4/9uH8HiKQNYvyeTd/ed4WieiQXvHOTFIE/mXRXLjFGReGq73s+rEN2VVqslIiKCM2fOkJubS0BAQKvmqjY0NDgT17MrHDctldc0Mqor/n0VHUeSWCF6ED8/P+dwna6Q2HWksws6daVeTo1GQ0REBEajkZKSEgoLC7FYLOTm5jqLQBkMBrRarbtDBaC6upqamhoUCsVF3RUXojvrE+jF0l8NYcHVcfxj72k2fpvFmbI6/vSfo6z+Io0546KZNaYvgd5d4+dViO4uJCSEsrIyampqyM7Opl+/fi3uZ7FYKC8vd+57Nl9fX4KCgggICECtllSmt5L/eSF6kLOT2IiICHeH02GsVqtzbdiuOvxVpVIRGhqKwWCgrKyMwsJCZ2XGoqIigoKCCA0NxdPT061xNvXCBgcHS/VG0WsFemtZMDmOeVfF8u8DZ3jt6wzOlNXxl+2prNmZzszLI7nvyhj6BEpxGCEuhUKhoG/fvhw/fpyKigrKy8udhRktFgsVFRXOaTln8/HxcSau8rdKgCSxQvQoTfNia2tre3RJ+bKyMhwOB97e3l2+ErNCoSA4OJjg4GAqKyspLCykqqqK0tJSSktL8ff3JzQ01C0952azmYqKCkCW1RECwFOrYvbYaO64PIpPjxTw6q50juaZSP4mizdTTnPj8HDuHx/L4DA/d4cqRLfl6emJ0WgkPz+f7OxsrFYr5eXlVFVVuezn7e1NUFAQgYGBPfZ6Rlw8mfwkRA+iVqudZeR/+cegJ+notWE7ir+/PwMGDGDQoEHOO8+VlZWkpqZy/PhxysvLO3Uh+KZeWH9//y5/M0CIzqRWKblxeDgf/8+V/OO+y7myvx6b3cEHB3O57q9fM3vDPt7dl01BZb27QxWiWwoLC8PDwwOr1Up2drbzmsXb25s+ffowbNgwBg0ahMFg6LUJbG5uLnfddRfBwcF4eXkxYsQIDhw44Hx98+bNTJ06Fb2+sbL6oUOHmrUxceJEFAqFy2PmzJnO13fu3Nns9abH/v37nfu19PratWs79PNfiPTECtHD+Pn5UVtbi8lkIigoyN3htLu6ujpqa2udy9x0R97e3sTGxmI2myksLKS0tJTa2loyMjLQ6XQYjcYOn+trtVqdNwOkF1aIlikUCq6KC+GquBB+yqnk1d3pfPpTPrtTi9mdWgw0FomaNDCESYMMJEQGSGVjIVpBoVAQHR3NqVOn0Gq1zuJMOp3O3aF1CeXl5SQlJTFp0iQ+++wzDAYD6enpBAQEOPepqakhKSmJGTNmMG/evHO2NW/ePJYvX+58fvY0pnHjxpGfn++y/x//+Ee++OILEhMTXbYnJyczbdo053N3L10kSawQPYyfnx8FBQXOOaM9TVPi5e/v3+0LOuh0OqKioggPD3dWNDabzc6KxqGhoR1WMbi4uBi73Y6Xl1ePLwImRHsY1sefv90xktOlNXxwMJedJ4s5nFPB8XwTx/NNvLIzHT8PNVcNCGHSQAMTBoQQ4isX5EKci7e3N8OHD3d3GF3SCy+8QGRkJMnJyc5t0dHRLvvMmjULgKysrPO25eXlhdFobPE1rVbr8prFYmHLli3Mnz+/2Y30gICAc7bjDnK7UIgexsfHB6VSicVicVn8uyfoKmvDtje1Wk14eDjDhg0jMjLSuVRSTk4OP/30E3l5eVit1nY7nt1up7i4sRdJemGFaJu+wd48fM0APnwoie+fuIbVt4/gphHhBHhpMNVb+eTHfB7592FGP/sFN/5tD3/ZnsrB7HJs9s6bKiCE6N62bNlCYmIiM2bMwGAwkJCQwGuvvXZRbb399tvo9XqGDBnCI488ct7pZlu2bKGkpIQ5c+Y0e23+/Pno9XpGjx7N2rVrsdvtFxVPe+ne3RhCiGaa1k2rrKzEZDK5vfptezKZTFgsFtRqtduHsXQEpVLpXE+2tLSUgoICzGYz+fn5FBYWEhISQmho6CXPDyorK8NisTiHcAkhLk6wj46bEyK4OSECm93BoTMV7DxZxFcniziSa+LHnEp+zKnkpR1pBHppmDCgcdjx+LgQWbZHiF6oqqrKZaScTqdrcQh1RkYGa9asYdGiRTz++OPs27ePBQsWoNPpmD17dquPd+eddxITE4PRaOTIkSMsWbKEw4cPs3379hb3X79+PVOnTiUyMtJl+9NPP83kyZPx9PRkx44dLF68mJKSEp588slWx9LeJIkVogfy8/NzJrE9qaetaShxUFBQl1obtr0pFAr0ej3BwcFUVFRQUFBAbW2tc3me4OBgjEbjRc8dairoZDAYevT3UYjOpFIqGNU3kFF9A1k8ZSBFVfXsOlnMzpPF7E4rprzWwoeH8vjwUB5KBYyIDGDSQAOTBhmID/NDqZSfRSF6uvj4eJfnS5cuZdmyZc32s9vtJCYmsmLFCgASEhI4evQoa9asaVMSe/Zc2aFDhxIXF0diYiI//PADI0eOdNk3JyeHzz//nPfee69ZO2cnqyNGjABg+fLlksQKIdpX01I7VVVV2O32DplT2dlsNptzOZieNJT4fJqKVwUGBmIymcjPz6e6upqSkhJKSkoIDAzEaDQ6K1K3RmVlJfX19ahUKvR6fQdGL0TvZvD1YEZiJDMSI7HY7PxwupyvThaz82QRJwqq+CG7gh+yK1i1PRW9j46JAxvn0l4Zp8ffs3dWYxWipzt27BgRERHO5+e6GR0WFtYs4R08eDCbNm26pOOPHDkSjUZDWlpasyQ2OTmZ4OBgbrzxxgu2M2bMGEwmE4WFhW7rLJEkVogeyMPDA61WS0NDA9XV1c6ktjtrWhvW09OzTUlbT+Hn54efnx/V1dUUFBRQWVlJeXk55eXl+Pv7YzQa8fHxuWA7Tb2wer0elUrV0WELIQCNSskVscFcERvMY9cNIr+yjp0ni/nqRBF7TpVQUm3m/QM5vH8gx9mjO3mQgcmDDfQL8ZERE0L0EL6+vq26JktKSuLkyZMu21JTU+nbt+8lHf/o0aNYLBbCwsJctjscDpKTk5k9e3arpiwdPHgQDw8Pl2rJnU2SWCF6KD8/P0pKSjCZTD0iie2ua8O2Nx8fH/r3709dXR0FBQWUlZVRWVlJZWUlPj4+GI3Gc84Xrq2tpaqqCoVCgcFg6OTIhRBNwvw9+c3lUfzm8ijMVhvfZ5Xz1YkidqYWc6qomn2ZZezLLOO5z04QFeTF1YMMXD3IwBWxQejUcvNJiJ5u4cKFjBs3jhUrVnDbbbexb98+1q1bx7p165z7lJWVkZ2dTV5eHoAz6TUajRiNRtLT03n77be5/vrr0ev1HDt2jMWLF5OQkEBSUpLL8b788ksyMzO57777msXy0UcfUVBQwNixY/H09OSrr77iiSee4P7773frkkiSxArRQ52dxHZ39fX11NTUAPTItW8vhqenJzExMYSHh1NQUEBpaSnV1dWcOnUKT09PjEYjgYGBLj04Tb2wgYGBaLVSVEaIrkCnVpHUX09Sfz1PAmfKavnyRBE7ThSxN72U7LJaNn6bxcZvs/DSqriyv57Jgw1MGmjA4Ofh7vCFEB1g9OjRfPDBByxZsoTly5cTExPD6tWrufPOO537bNmyhXvuucf5fObMmcB/59lqtVp27NjBX//6V6qrq4mMjOSGG25g6dKlzUZirV+/nnHjxjF48OBmsWg0Gl555RUWLVqE3W4nNjaW5cuX89BDD3XQp28dSWKF6KGa1v6sq6vDYrFcckVbd2paVsff379bf46OoNPp6Nu3L+Hh4RQWFlJcXExdXR2ZmZnk5eVhNBoJDg7GYrFQXl4OyLI6QnRlkUFe3D0umrvHRVNjtvLNqRK+PFHElyeKKKoys+1YIduONd6QuqyPP5MGNg47HhruL8WhhOhBpk+fzvTp08/5+pw5c1pcCqdJZGQku3btatWx/vnPf57ztWnTpjFt2rRWtdOZJIkVoodSq9V4e3tTU1ODyWTq1sNwZSjxhWk0Gvr06YPRaKS4uJiioiLMZjOnT58mLy8PDw8PHA4Hvr6+vXJOsRDdkbdOzZQhRqYMMWK3OziWb2LH8SK+PFHI4Z+X7/kxp5K/7kgjxFfHpIEhXD0olCvj9Pjo5BJPCNFzyW84IXowPz+/bp/EVlVV0dDQgEql6pFrw7Y3tVpNWFgYoaGhFBcXU1hYiMViwWKxANILK0R3pVQqGBrhz9AIf/73mjiKqurZebKYL48X8XVaMcVVZt77Pof3vs9Bq1JyRWwQVw8yMHlQKFHBcuNKCNGzSBIrRA/m5+dHfn5+t54X29QLGxgY2COWCuosSqWS0NBQDAYDpaWlFBUVodPp5EaAED2EwdeD2xIjuS0xErPVxr7Mssa5tMeLyC6r5eu0Er5OK+Gpj47R3+DjLA41qm8gGpX8LhVCdG/d5rfYs88+y7hx4/Dy8jpnOWeFQtHssXbtWpd9fvrpJyZMmICnpycREREsX74ch8Phss+uXbsYNWoUHh4exMbGNmtDiO7C29sblUqF1WqltrbW3eG0md1ud87j7K49ye6mUCjQ6/XEx8fTr18/d4cjhOgAOrWKq+JCWPqrIez6/US+WDSBJ64fzJjYIFRKBaeKqlm3O4OZ6/Yy/Klt/OrlPSx45yCrv0jlP4dyOZJbSY3Z6u6PIYQQrdZtemIbGhqYMWMGY8eOZf369efcLzk52WXy8dm9DiaTiWuvvZZJkyaxf/9+UlNTmTNnDt7e3ixevBiAzMxMrr/+eubNm8dbb73FN998w4MPPkhISAi33nprx31AITqAQqHA19eXiooKTCZTt5sLWV5ejt1uR6fTtWoNVCGE6O0UCgX9DT70N/gwb3wslXUWdqc2rkn71ckiymst/JRbyU+5lc3eG+qnI1bvQ0yIN7F6b2JDvInV+9An0BO19N4KIbqQbpPEPvXUUwBs3LjxvPsFBARgNBpbfO3tt9+mvr6ejRs3otPpGDp0KKmpqfzlL39h0aJFzp7bqKgoVq9eDcDgwYP5/vvvWblyZbsnsTabzTlPrSNZLBbUajX19fXYbLYOP57oXBqNplmp9LP5+fk5k9hz/Wx0VVLQSQghLo2/p4ZfDQ/nV8PDsdkdZBRXk1FSQ0ZxDZkl1T//W0NpTQOFJjOFJjMpGaUubWhUCqKCvIjR+9AvxJsYvTexIT7E6L3R+2hdlvISQojO0G2S2NaaP38+c+fOJSYmhvvuu4/777/fOY8uJSWFCRMmuCzMO3XqVJYsWUJWVhYxMTGkpKQwZcoUlzanTp3K+vXrz7lMidlsxmw2O59XVVUBYLVaW0xSHQ4HRUVFnTZP0eFwYDQayc7Olj80PZSfnx8Gg6HF/19PT0+sVisVFRWYzeZWzSttOm874ybLuTQ0NDiHEvv5+bk1FnF+XeF8Ed2LnDPuEx3kQXSQB1cPcL05WFlnIbOkhsySWjJLG//NKqkhs7QWs9VOenEN6cU1fHHctT1fDzUxwV7E6L2JDvZi6pBQ4gztP3JGzhnRVl3pnLFaZbh+e+tRSezTTz/N5MmT8fT0ZMeOHSxevJiSkhKefPJJAAoKCoiOjnZ5T1OlzoKCAmJiYigoKGhWvTM0NBSr1UpJSQlhYWHNjvvcc885e4rPtmPHDvR6fbPtvr6+BAYGotfr0WrlDqa4eA6Hg4aGBoqLi0lNTXXeQPml06dPY7FYOHXqFN7e3q1uf/v27e0VapuVlZVRVlaGp6cnBQUFbotDtJ47zxfRPck50/XogEHAID/AD+wxUNEARXUKiusb/y2qg6J6BeVmqKq38mOuiR9zG2/M/+2rU1wXaWdyuIOOWLZWzhnRVl3hnCkpKXF3CD2OW5PYZcuWtZj8nW3//v0kJia2qr2mZBVgxIgRACxfvtxl+y8TxqaiTmdvb80+Z1uyZAmLFi1yPs/NzSU+Pp7JkycTERHhsq/NZiMjI4OQkJBOGyLpcDioqqrC19dXEuYeysPDA51Ox7hx41ocWpydnU1JSQkhISFERkZesD2LxcL27du59tprWxx90BmOHDlCQ0MDffv2leHEXVxXOF9E9yLnTM9gttg4XVbb2HtbUsPezHK+SS/l42wVeQTw51uH0jeofWoxyDkj2qornTO5ubluPX5P5NYkdv78+cycOfO8+/yy57QtxowZg8lkorCwkNDQUIxGY7MenaKiIuC/PbLn2ketVp/zQlqn07kMUW4aJqxWq5v90NhsNhQKBT4+Pp22XIjdbgcak3BZoqRn8vHxcd7la+kXdXBwMBUVFdTV1bXpF7lGo3HLL/6amhrsdjtarZaQkJDzzvkVXYe7zhfRfck5071pNBqGeHkwpE8QAPMdDt4/kMNTHx3jh+wKbvx7Cn+cHs/M0ZHtdhNdzhnRVl3hnFGre9Tg1y7Brd9RvV7f4nDb9nLw4EE8PDycS/KMHTuWxx9/nIaGBrRaLQDbtm0jPDzcmSyPHTuWjz76yKWdbdu2kZiY2K4/ANIjKtrThc6npl74+vp6l/O/qzp7bVhJYIUQontQKBTMSIxkTGwwi/99mH2ZZSzZ/BPbjxXy/K3DMPh6uDtEIUQP0W265bKzszl06BDZ2dnYbDYOHTrEoUOHqK6uBuCjjz7itdde48iRI6Snp/P666/zxBNPcP/99zt7Se+44w50Oh1z5szhyJEjfPDBB6xYscJZmRjggQce4PTp0yxatIjjx4+zYcMG1q9fzyOPPOK2zy7EpVKpVM65sJ1VUOxi2e12ysrKAKlKLIQQ3VFkkBfvzhvDE9cPRqtS8uWJIqb+324++ynf3aEJIXqIbpPE/ulPfyIhIYGlS5dSXV1NQkICCQkJfP/990DjUIFXXnmFsWPHctlll/HXv/6V5cuXs2rVKmcb/v7+bN++nZycHBITE3nwwQdZtGiRy3zWmJgYPv30U3bu3MmIESN4+umneemll2SN2E6yceNGZ8+5aF9+fn5A109iKysrsdlsaLVaWRtWCCG6KaVSwbzxsXz0P1cyOMyP8loLv3v7Bxa9dwhTvfurxQohurduM0B748aN510jdtq0aUybNu2C7QwbNozdu3efd58JEybwww8/tDXEHm/OnDm88cYbzbZPnTqVrVu3tssxbr/9dq6//nrn82XLlvHhhx9y6NChdmm/N/Pz8yMvLw+TyYTD4eiyQ9qbhhIHBQV12RiFEEK0zkCjL/95KInVX6Sydlc6m3/IZW96KStnDGdc/46bUiaE6Nm6TRIruoZp06aRnJzssu3solaXytPTE09Pz3ZrT/yXl5cXKpUKm81GbW1tm5ba6SwWi8XZUyxDiYUQomfQqpU8Om0QVw8ysOi9w2SX1XLH699xb1IMj04biIdGah8IIdqm2wwnFl2DTqfDaDS6PAIDAwFIS0tj/PjxeHh4EB8fz/bt21EoFHz44YcA7Ny5E4VCQUVFhbO9Q4cOoVAoyMrKAlyHE2/cuJGnnnqKw4cPo1AoUCgUbNy4kXvvvZfp06e7xGW1WjEajWzYsKGjvwXdlkKh6PJDisvKynA4HHh7e+PhIQVAhBCiJ0mMDuKz/72K31weBcCGbzL51ct7OJJb6ebIhBDdjfTEdgEOh4M6i63D2rfb7dQ12FA3WJstseOpUbXLkE273c4tt9yCXq9n7969mEwmHn744Utq8/bbb+fIkSNs3bqVL774Amic1zxgwADGjx9Pfn4+YWFhAHz66adUV1dz2223XepH6dH8/PwoLy/HZDI5v3ddSdNQYumFFUKInslbp+a5W4ZxbbyBR9//ibSiam7++zc8fE0cD0zoh1ol/StCiAuTJLYLqLPYiP/T52459rHlU/HStv40+Pjjj5sV2/nDH/7AFVdcwfHjx8nKyqJPnz4ArFixguuuu+6iY/P09MTHxwe1Wo3RaHRuHzduHAMHDuQf//gHjz76KADJycnMmDFDCgFdQFNPbE1NDTabrUstX1NbW0tdXR0KhcLZuy+EEKJnunpQKNsWBvLEBz/x2ZECVm5LZceJIv5y2whi9F1vuosQomuR212iTSZNmuRc3qjp8dBDD3H8+HGioqKcCSw0rrnbUebOneucm1tUVMQnn3zCvffe22HH6ym0Wi0eHh44HA6qqqrcHY6Lpl7YgIAAWRRcCCF6gSBvLa/cOZK/3DYcX52ag9kVXP/Xr/nH3tM4HA53hyeE6MLkSrEL8NSoOLZ8aoe1b7fbqTJV4evn2+Jw4rbw9vamf//+zba39Mfml8OUm4599r4Wy8WV2Z89ezaPPfYYKSkppKSkEB0dzVVXXXVRbfU2fn5+1NfXYzKZusxyRg6HQ9aGFUKIXkihUHDLyD5cERvM7/99mG/TS/njh0f44lghf/71ZYT6SX0E0Tvl5ubyhz/8gc8++4y6ujoGDBjA+vXrGTVqFACbN2/m1Vdf5cCBA5SWlnLw4EFGjBjh0sbEiRPZtWuXy7bbb7+dd9991/k8Ojqa06dPu+zzhz/8geeff975PDs7m4ceeogvv/wST09P7rjjDlauXIlWq23nT916ksR2AQqFok1DetvKbrdj1arw0qqbJbHtJT4+nuzsbPLy8ggPDwcgJSXFZZ+QkBAA8vPzncNFL7R0jlarxWZrPl84ODiYm2++meTkZFJSUrjnnnva4VP0Dn5+fhQVFXWp4k4mkwmr1YparXYOeRZCCNF7RAR48tZ9V7Dx2yxe2HqCXanFTF29m2dvHsYNl3W9Gg5CdKTy8nKSkpKYNGkSn332GQaDgfT0dJfOh5qaGpKSkpgxYwbz5s07Z1vz5s1j+fLlzuctrQKyfPlylzbOnp5ns9m44YYbCAkJYc+ePZSWlnL33XfjcDh4+eWXL/GTXjxJYkWbmM1mCgoKXLap1WquueYaBg4cyOzZs1m1ahUmk4knnnjCZb/+/fsTGRnJsmXLeOaZZ0hLS2PVqlXnPV50dDSZmZkcOnSIPn364Ovr61zSZ+7cuUyfPh2bzcbdd9/dvh+0B/Px8UGhUGA2mzGbze26RNLFkrVhhRBCKJUK7r0yhqvi9Cx87xBHck089M8f2H4snCevH+ju8IToNC+88AKRkZEuy1pGR0e77DNr1iwA5wof5+Ll5eVSW6Ylvr6+59xn27ZtHDt2jDNnzjg7qlatWsWcOXN49tln3db5IHNiRZts3bqVsLAwl8eVV16JUqnkgw8+wGw2c/nllzN37lyeffZZl/dqNBreeecdTpw4wfDhw3nhhRd45plnznu8W2+9lWnTpjFp0iRCQkJ45513nK9dc801hIWFMXXqVOcPlbgwlUrlvMPWFXpjrVarc9klGUoshBAiLtSXzb9LYsHV/VEpFXx4KI8b/vYtJyrkJqfo3qqqqjCZTM6H2Wxucb8tW7aQmJjIjBkzMBgMJCQk8Nprr13UMd9++230ej1DhgzhkUceabEmygsvvEBwcDAjRozg2WefpaGhwflaSkoKQ4cOdbnWnjp1KmazmQMHDlxUTO1BemJFq23cuJGNGzee8/UBAwbw9ddfn7eNpKQkfvzxR5dtZ8+RnTNnDnPmzHE+1+l0vP/++y22VVdXR0VFBffdd9+Fgxcu/Pz8nL9Im4Z5u0t5eTkOhwNPT0+8vLzcGosQQoiuQatWsmjKQCYNMrDovcNkltSwxqQiZd13zBoTzQ2XheHRxroeQrhbfHy8y/OlS5eybNmyZvtlZGSwZs0aFi1axOOPP86+fftYsGABOp2O2bNnt/p4d955JzExMRiNRo4cOcKSJUs4fPgw27dvd+7zv//7v4wcOZLAwED27dvHkiVLyMzM5PXXXwegoKCA0NBQl3YDAwPRarXNRmd2JkliRbdjt9spKChg1apV+Pv7c+ONN7o7pG7Hz8+P3NxcqqqqcDgcbh3CK2vDCiGEOJeEqEA+WXAlz31yjH/uy+bQmUoOnTnM8o+P8etRfbjziihiQ2R5PdE9HDt2jIiICOfzc03pstvtJCYmsmLFCgASEhI4evQoa9asaVMSe/Y816FDhxIXF0diYiI//PADI0eOBGDhwoXOfS677DICAwP59a9/7eydhebFWgG3Xz/KcGLR7WRnZxMREcF7773Hhg0bZDmWi+Dp6YlarcZms1FTU+O2OOrr66mpqUGhUBAUFOS2OIQQQnRdXlo1f5o+mGUjbSy+pj8RAZ5U1llYvyeTq1ft4o7X9vLpT/lYbHZ3hyrEefn6+uLn5+d8nCuJDQsLa9ZrO3jwYLKzsy/p+CNHjkSj0ZCWlnbOfcaMGQPAqVOnADAajc16XMvLy7FYLM16aDuTXP2LDtUR67xFR0fL+nGXSKFQ4OfnR1lZGSaTyaUKXWdq6oX18/NDo9G4JQYhhBDdg58WZk6I5cGrB7A7tZi39p7my5NFfJteyrfppYT46rg9MZLfXBFFREDzCqxCdBdJSUmcPHnSZVtqaip9+/a9pHaPHj2KxWIhLOzcFb8PHjwI4Nxn7NixPPvss+Tn5zu3bdu2DZ1O51zuxx0kiRWilzo7iXVHYSxZG1YIIcTFUCkVTBpkYNIgAznltfxr/xne3X+G4iozf/vqFK/sPMWkgQbuGtOX8QNCUCmlIJToXhYuXMi4ceNYsWIFt912G/v27WPdunWsW7fOuU9ZWZlzeUvAmfQajUaMRiPp6em8/fbbXH/99ej1eo4dO8bixYtJSEggKSkJaCzatHfvXiZNmoS/vz/79+9n4cKF3HjjjURFRQEwZcoU4uPjmTVrFi+++CJlZWU88sgjzJs3z63LIspwYiF6KV9fX6BxnTGr1drpx6+urqahoQGVSoW/v3+nH18IIUT31yfQi8VTBvLtY1fzyp0jGdcvGLsDdpwo4p6N+5nw4lf8/atTFFe1XAVWiK5o9OjRfPDBB7zzzjsMHTqUp59+mtWrV3PnnXc699myZQsJCQnccMMNAMycOZOEhATWrl0LgFarZceOHUydOpWBAweyYMECpkyZwhdffIFK1VgUTafT8a9//YuJEycSHx/Pn/70J+bNm+eyGohKpeKTTz7Bw8ODpKQkbrvtNm6++WZWrlzZid+R5qQnVoheSqvV4uHhQX19PVVVVQQGBnbq8c9eG1aplPtpQgghLp5GpeT6YWFcPyyM9OJq/vldNu8fyCGnvI4XPz/J6i9SmTLEyF1X9GVMrKxJLrq+6dOnM3369HO+/ssVPX4pMjKSXbt2nfcYI0eOZO/evReMJSoqio8//viC+3UmSWKF6MX8/Pyor6/HZDJ1ahJrs9koLy8HZCixEEKI9tUvxIc/To/n91MH8vGP+bz93WkOZlfwyY/5fPJjPrEh3tx5RV9+PbIP/l5Sj0GI7ki6P4ToxZqG8ZpMpk49bkVFBXa7HZ1Oh7e3d6ceWwghRO/goVHx61F9+ODBJD5ZcCV3XBGFl1ZFRnENT398jMtXfMEj/z7MoTMVUjBSiG5GklghejEfHx8UCgUNDQ3U19d32nFlbVghhBCdaUi4Pyv+3zC+e3wyT988lEFGX8xWO+8fyOHmv3/D9Jf3sPVIvrvDFEK0kiSxosvZuHEjAQEB7g6j3axbt47IyEiUSiWrV692dzgulEqlc3mdzuqNbWhooKqqCpAkVgghROfy9dAwa0xfPvvfq9j0u7HckhCBVq3kaJ6JB976gQf+cYCiqs67qSuEuDiSxIpWmzNnDgqFotlj2rRp7Xqc22+/ndTUVOfzZcuWMWLEiHY9RlvExMSwdevWi3qvyWRi/vz5/OEPfyA3N5f777+/naO7dE3l0TsriW3qhfX19UWr1XbKMYUQQoizKRQKRvUN4i+3j2Dvksk8NKkfaqWCrUcLuPYvu9l0IEeGGAvRhUkSK9pk2rRp5OfnuzzOLsPdHjw9PTEYDO3a5sX68ccfKS0tZdKkSRf1/uzsbCwWCzfccANhYWF4eXm1c4SXrmlebFVVVYf/wa6urqa4uBiQXlghhBBdQ5C3lt9PHcSW+VcyNMKPyjoLi/99mDnJ+8mtqHN3eEKIFkgSK9pEp9M5F1Fuepxd1TYtLY3x48fj4eFBfHw827dvR6FQ8OGHHwKwc+dOFAoFFRUVzvccOnQIhUJBVlYW4DqceOPGjTz11FMcPnzY2fO7ceNG7r333mZlx61WK0ajkQ0bNjSL2+FwEBISwqZNm5zbRowY4ZIsp6SkoNFoqK6udm77z3/+w9SpU9HpdABs2rSJIUOGoNPpiI6OZtWqVef8Xm3cuJFhw4YBEBsb6/IZP/roI0aNGoWHhwexsbE89dRTLmu1VlZWcv/992MwGPDz8+Pqq6/m8OHD5zzWpfD09ESj0WC3210+e3uqq6vj1KlTnDx5EovFgkaj6fQlfYQQQojziQ/348MHk3h02kC0aiW7UouZ8pddvLX3NHa79MoK0ZXIEjtdgcMBltqOa99ub2y/QQW/XI9T4wXttFaa3W7nlltuQa/Xs3fvXkwmEw8//PAltXn77bdz5MgRtm7dyhdffAE09hwOGDCA8ePHk5+fT1hYGACffvop1dXV3Hbbbc3aUSgUjB8/np07d3LrrbdSXl7OsWPH8Pb25tixY8THx7Nz505GjRrlnCMKjQtJ/+///i8ABw4c4LbbbmPZsmXcfvvtfPvttzz44IMEBwe3uE7X7bffTmRkJNdccw379u0jMjKSkJAQPv/8c+666y5eeuklrrrqKtLT053DjJcuXYrD4eCGG24gKCiITz/9FH9/f1599VUmT55MamoqQUFBl/Q9bYmvry9lZWWYTCZ8fX3brd2Ghgby8vKcQ4gVCgV6vZ6wsDBZG1YIIUSXo1YpeXBif6bEG/nDph85cLqcJz88wkeH83jh1suI1ktFfSG6AkliuwJLLawI77DmlUDAuV58PA+0rf+F/PHHH7skeQB/+MMf+OMf/8gXX3zB8ePHycrKok+fPgCsWLGC66677qLihsZeQh8fH9RqNUaj0bl93LhxDBw4kH/84x88+uijACQnJzNjxoxm8TWZOHEi69atA2D37t0MHz6cqKgodu7c6UxiJ06c6Nw/NzeXw4cPc/311wPwl7/8hcmTJ/PHP/4RgAEDBnDs2DFefPHFFpNYT09P55DZkJAQZ/zPPvssjz32GHfffTfQ2Ev79NNP8+ijj7J06VK++uorfvrpJ4qKipw9wCtXruTDDz/k/fff75B5tX5+fs4kNiIi4pLbs1qtFBQUUFRU5ByiHBgYSHh4OB4eHpfcvhBCCNGR+ht8eO+3Y3kzJYs/bz3Jd5llTPvrbhZfO5B7r4xBpWyfDgAhxMWRrhDRJpMmTeLQoUMuj4ceegiA48ePExUV5UxgAcaOHdthscydO5fk5GQAioqK+OSTT7j33nvPuf/EiRM5evQoJSUl7Nq1i4kTJzJx4kR27dqF1Wrl22+/ZcKECc79t2zZQlJSkrPn8/jx4yQlJbm0mZSURFpaGjabrdVxHzhwgOXLl+Pj4+N8zJs3j/z8fGprazlw4ADV1dUEBwe77JOZmUl6enpbvkWt1lTcqba21mVYc1vZ7XYKCgo4cuQIhYWFOBwOfH19GTRoELGxsZLACiGE6DZUSgX3JMXw+cPjSeofTL3FzrOfHufWNd+SWljl7vCE6NWkJ7Yr0Hg19oh2ELvdjqmqCj9f3+ZDODVtKzTk7e1N//79W3ytpaJAil8MVW46/tn7WiyWNsXQZPbs2Tz22GOkpKSQkpJCdHQ0V1111Tn3Hzp0KMHBwezatYtdu3axfPlyIiMjefbZZ9m/fz91dXVceeWVzv23bNnCTTfd5PL5fvl5LqYQkt1u56mnnuKWW25p9pqHhwd2u52wsDB27tzZ7PWOWnpIo9Hg6elJXV3dRQ0pdjgclJaWkpeX5/z/9PT0JCIiwlk4SgghhOiOooK9eOu+K/jX/jM8+8lxDp2pYPpLe/ifq/vzwMR+aFTu6xMqr2ngu8xSfD00DDL6Euyjc1ssQnQmSWK7AoWiTUN628xuB42t8RgdOA8xPj6e7Oxs8vLyCA9vHB6dkpLisk9ISAgA+fn5zsI+hw4dOm+7Wq22xZ7O4OBgbr75ZpKTk0lJSeGee+45bztN82L/85//cOTIEa666ip8fX2xWCysXbuWkSNHOpO36upqvvrqK/7+97+7fL49e/a4tPntt98yYMAAVCrVeY99tpEjR3Ly5Mlz3gwYOXIkBQUFqNVqoqOjW93upfLz87uoJLaiooLc3Fzq6xvX1dNqtYSHhxMUFNQs6RdCCCG6I4VCwczLo5gwMIQnPzjCjhNFrNqeyqdHCnjx15cxNKLzbtimF1ez43ghXxwr4vvTZZxdc0rvo2NwmC8DQ30ZFObHIKMv/Q0+eGhaf50iRHcgSaxoE7PZTEFBgcs2tVqNXq/nmmuuYeDAgcyePZtVq1ZhMpl44oknXPbt378/kZGRLFu2jGeeeYa0tLTzVvgFiI6OJjMzk0OHDtGnTx98fX2dc0Xnzp3L9OnTsdlszjmm5zNx4kQWLlxIQkKCcwjt+PHjefvtt1m0aJFzv61btxIXF0dsbKxz2+LFixk9ejRPP/00t99+OykpKfztb3/jlVdeueBxz/anP/2J6dOnExkZyYwZM1Aqlfz444/89NNPPPPMM1xzzTWMHTuWm2++mRdeeIGBAweSl5fHp59+ys0330xiYmKbjtdafn5+FBYWtnpebHV1NTk5OdTU1AA45y2HhIRI0SYhhBA9Upi/J6/fnciWw3ks23KU4/kmbvr7N/x2fCwLJsd1SLJotdk5cLqcL44XsuN4ERklNS6vDwj1ocFq53RZLSXVZr5OM/N1WonzdZVSQXSwV2NSe1ZyGxHgiVLm9opuSpJY0SZbt251VgNuMnDgQE6cOIFSqeSDDz7gvvvu4/LLLyc6OpqXXnqJadOmOffVaDS88847/O53v2P48OGMHj2aZ555hhkzZpzzmLfeeiubN29m0qRJVFRUkJyc7CykdM011xAWFsaQIUOcvb/nM2nSJGw2m0sBpwkTJvDhhx+6zIf9z3/+4zKUGBp7SN977z3+9Kc/8fTTTxMWFsby5ctbLOp0PlOnTuXjjz9m+fLl/PnPf0aj0TBo0CDmzp0LNN7t/fTTT3niiSe49957KS4uxmg0Mn78eEJDQ9t0rLbw8fFBqVRisVioqzv3unh1dXXk5uZSWVkJNA4RDw0NJTQ0tE090kIIIUR3pFAouGlEBEn99SzbcpSPf8znlZ3pfH60gD//+jJG9b30VQSq6i3sTi3hi+OFfHWyiIra/0690qgUjIkN5prBoUwebKBPYOPUsNoGK6mF1ZzIN3GioIoTBY3/VtRaSC+uIb24hk/Id7bjo1MzINTHmdQODPVlkNEPfy/NRcVstzuoqrdSVttAeW0DFbUNlNVYfv63gfLa/35dUWuhvLaByjoL/p4aIgI9CQ/wpE9A478RAZ7Obf6eFxeP6NkUjouZ1CfOKycnh8jISM6cOeNS5Aigvr6ezMxMYmJiOq3Ijd1ux2Qy4efn55YeMoVCwQcffMDNN9/c7m3X1tYSHh7Ohg0bWpxjejFsNhsGg4HPPvuMyy+/vF3a7GjtdV6lpaVhMpkIDQ3lwIEDXH/99Wg0jX88zrdcTtM+oneyWCx8+umnLueLEOcj54xoq658znx+tIAnPzxCcZUZhQLmjIvm91MH4qVtW1/RmbJadhwvZMeJIvZmlGKx/fcSPcBLw9UDDUweHMr4AXp8PVr3PXA4HBRVmRuT2nwTJwuqOF5QRXpRNQ02e4vvCfP3aExqjX4MDvMl1M+DyjqLS1Ja/ouvmxLUjlhO11enbkxsAz0JD/AgIsCL8AAP+vyc5Bp8PVqsFt2Vzpnz5Qbi4khPrOiWmqrgrlq1Cn9/f2688cZ2a7u0tJSFCxcyevTodmuzu/Dz88NkMmEymZzbZLkcIYQQ4tymDjEyJiaYpz85xvsHckj+Josvjhfy/C2XkdRff8732e0Ofsyt5ItjhXxxvJATBa4Vj2NDvLlmcCjXDA5lZFQA6osoIKVQKAj18yDUz4MJA0Kc2y02O5klNS7J7YmCKnIr6sivrCe/sp6vTha3+XgA3loVAV5agry1BHhpCPzF14HeWgJ//trfU0N5bQO55XXkVjQ+8n7+N7e8jvJaC1VmKycLqzh5jorQaqWCsAAPwv0bE92In3tyDb4aCuvAbLXTxe57iHYgSazolrKzs4mJiaFPnz5s3LgRtbr9TmWDwcCTTz7Zbu11J03zhKurq7HZbBQUFFBaWuosrOXr60tERATe3rLYuxBCCNHE30vDyhnD+dXwcB7f/BNnyuq48/Xv+M3lkSy5fjB+P/ec1jXY+OZU4zDhHSeKKK4yO9tQKiAxOohrfx4mHBvS8rr37UGjUjIg1JcBob7cOPy/07Eq6yykFla5JLcl1WYCvP6beDqTUG8tgV6NyWnQWV/r1G2bWhQZ5MVlfQJafK22wfpzUltPbvlZCe7PSW6BqR6r3cGZsjrOlNVB5i9bUDNgRDkTBxnb9g0SXV63SGKzsrJ4+umn+fLLLykoKCA8PJy77rqLJ554Aq1W69wvOzubhx56iC+//BJPT0/uuOMOVq5c6bLPTz/9xPz589m3bx9BQUH89re/5Y9//KNLFdVdu3axaNEijh49Snh4OI8++igPPPBAp37mnqQjRqxHR0d3SLu9naenJxqNBqvVyunTp4mIiECtVstyOUIIIUQrTBgQwucLx/PnrSd4M+U07+w7w1cnipk9ri8/nC7n67QSzNb/DuP10amZMCCEa+INTBxgINBbe57WO56/p4bR0UGMjr70eb3twUurpr/Bl/6GlldNsNrsFFWZnT24OWcnuuW1ZJdUE+4vo8Z6om6RxJ44cQK73c6rr75K//79OXLkCPPmzaOmpoaVK1cCjfMYb7jhBkJCQtizZw+lpaXcfffdOBwOXn75ZQBMJhPXXnstkyZNYv/+/aSmpjJnzhy8vb1ZvHgxAJmZmVx//fXMmzePt956i2+++YYHH3yQkJAQbr31Vrd9D4ToLE1L7djtdjQaDX379pXlcoQQQohW8tGpWX7TUG4YFsYfNv1IVmktf9560vl6RIAn18Y39rZeEROMVi0V/S+WWqUk/OdiUL9ksVj45JNPiQ72ckNkly43N5c//OEPfPbZZ9TV1TFgwADWr1/PqFGjANi8eTOvvvoqBw4coLS0lIMHDzJixAiXNiZOnMiuXbtctt1+++28++67QOs7Clu6BlyzZo1bO/m6RRI7bdo0lwq3sbGxnDx5kjVr1jiT2G3btnHs2DHOnDnjrFK7atUq5syZw7PPPoufnx9vv/029fX1bNy4EZ1Ox9ChQ0lNTeUvf/kLixYtQqFQsHbtWqKioli9ejUAgwcP5vvvv2flypWSxIpewWg0UldXh16vZ8iQIc7ljIQQQgjRelfEBrP14fH8/atTHDpTwRUxQVwTH8rAUF+5MdxJFIqWE7Curry8nKSkJCZNmsRnn32GwWAgPT2dgIAA5z41NTUkJSUxY8YM5s2bd8625s2bx/Lly53PPT3/m/C3pqOwSXJysks+5u7Red0iiW1JZWUlQUH/HeqQkpLC0KFDXZZZmTp1KmazmQMHDjBp0iRSUlKYMGGCy0X51KlTWbJkCVlZWcTExJCSksKUKVNcjjV16lTWr1+PxWJpt+pmdnvLFeGEuBjteT55eHjQv39/UlNTZb1XIYQQ4hJ4aFQsnjLQ3WGIbuaFF14gMjKS5ORk57bo6GiXfWbNmgU09qaej5eXF0Zjy3OCW9NR2CQgIOCc7bhDt0xi09PTefnll1m1apVzW0FBQbM1NAMDA9FqtRQUFDj3+eUJ0PSegoICYmJiWmwnNDQUq9VKSUlJszVSAcxmM2bzfyfmV1U1Vk+zWq1YLBaXfRUKBQqFgtzcXEJCQtBoNB1+h8jhcNDQ0EBdXV23vBslzs3hcGCxWCguLnaeW7885y5GUxvt0Zbo+eR8EW0l54xoKzlnRFt1pXPGarUCjTnC2StA6HS6Fke8bdmyhalTpzJjxgx27dpFREQEDz744Hl7XM/l7bff5q233iI0NJTrrruOpUuX4uvb8hxjaN5R2GT+/PnMnTuXmJgY7rvvPu6//363dna4NYldtmwZTz311Hn32b9/P4mJic7neXl5TJs2jRkzZjB37lyXfVtK0BwOh8v2X+7TVByorfuc7bnnnmvxc+zYsQO9vnlpdaVSSUBAAJWVlZJUikvmcDiora2lsrKSkydPXvgNbbB9+/Z2bU/0bHK+iLaSc0a0lZwzoq26wjlTUlICQHx8vMv2pUuXsmzZsmb7Z2RksGbNGhYtWsTjjz/Ovn37WLBgATqdjtmzZ7f6uHfeeScxMTEYjUaOHDnCkiVLOHz48Dm/Jy11FAI8/fTTTJ48GU9PT3bs2MHixYspKSlx62oebk1i58+fz8yZM8+7z9k9p3l5eUyaNImxY8eybt06l/2MRiPfffedy7by8nIsFouzZ9VoNDp7ZZsUFRUBXHAftVpNcHBwizEuWbKERYsWOZ/n5uYSHx/P5MmTiYiIaPE9DocDm82GzWbr8Cq7VquVb7/9lnHjxrXrUjTC/RQKBSqVCpVK1a43RCwWC9u3b+faa691+wLhouuT80W0lZwzoq3knBFt1ZXOmdzcXACOHTvmkhucq+6I3W4nMTGRFStWAJCQkMDRo0dZs2ZNm5LYs3tuhw4dSlxcHImJifzwww+MHDnSZd/zdRSenaw2FY9avnx5701i9Xp9iz2VLcnNzWXSpEmMGjWK5OTkZt3XY8eO5dlnnyU/P9855Hfbtm3odDpnFa+xY8fy+OOP09DQ4Ky4tW3bNsLDw53J8tixY/noo49c2t62bRuJiYnn/AH45VCApmECarXa7T800PhDbLVa8fHx6RLxiO5Do9HIOSNaTc4X0VZyzoi2knNGtFVXOGeaOpF8fX3x8/O74P5hYWHNem0HDx7Mpk2bLimOkSNHotFoSEtLc0liz9dR2JIxY8ZgMpkoLCxsNg2zs3SLqi15eXlMnDiRyMhIVq5cSXFxMQUFBS49plOmTCE+Pp5Zs2Zx8OBBduzYwSOPPMK8efOcJ8sdd9yBTqdjzpw5HDlyhA8++IAVK1Y4KxMDPPDAA5w+fZpFixZx/PhxNmzYwPr163nkkUfc8tmFEEIIIYQQvUdSUlKzKWKpqan07dv3kto9evQoFovFpcZPbm4uEydOZOTIkS12FLbk4MGDeHh4uFRL7mzdYmzptm3bOHXqFKdOnaJPnz4urzUNxVWpVHzyySc8+OCDJCUl4enpyR133OFSWcvf35/t27fz0EMPkZiYSGBgIIsWLXIZChwTE8Onn37KwoUL+fvf/054eDgvvfSSLK8jhBBCCCGE6HALFy5k3LhxrFixgttuu419+/axbt06l17SsrIysrOzycvLA3AmvUajEaPRSHp6Om+//TbXX389er2eY8eOsXjxYhISEkhKSgL+21EYFRXl7Chs0lSJ+KOPPqKgoICxY8fi6enJV199xRNPPMH999/v1mUYu0USO2fOHObMmXPB/aKiovj444/Pu8+wYcPYvXv3efeZMGECP/zwQ1tCFEIIIYQQQohLNnr0aD744AOWLFnC8uXLiYmJYfXq1dx5553OfbZs2cI999zjfN5UZ6ipWJRWq2XHjh389a9/pbq6msjISG644QaWLl2KSqUCWtdRqNFoeOWVV1i0aBF2u53Y2FiWL1/OQw891NHfhvNSODq6qlAvlJGRQb9+/fjPf/7T4pI8nc1qtbJnzx6uvPJKKewkWkXOGdEWcr6ItpJzRrSVnDOirbrSOZOfn89NN91Eeno6sbGxbo2lp5DfAh2gqaf3pptucnMkQgghhBBCiK5g9+7dksS2E0liO8CECROAxnViu0pP7K5du5gwYYLb70SJ7kHOGdEWcr6ItpJzRrSVnDOirbrSOZOfn8/kyZOdOYK4dPJboAM0lfEeMGBAs/Hl7mCxWMjIyGDQoEFuLzEuugc5Z0RbyPki2krOGdFWcs6ItupK54yvry+A2+PoSbrFEjtCCCGEEEIIIQRIEiuEEEIIIYQQohuRJFYIIYQQQgghRLchc2KFEEIIIYToRmw2GxaLpV3bs1qt7dZeV2C1WtHpdJhMpk4p7OTt7e32AlK9iXynhRBCCCGE6AYcDgcFBQVUVFS0W3tWqxWHw4FCoWiXNruSsLAwcnNzO+VYDoeD/v374+3t3SnH6+0kiRVCCCGEEKIbaEpgDQYDXl5el5x4FhcXU1VVRUhISLu015U4HA7sdjtKpbLDP5fNZiM3N5esrCwGDx6MUikzNjuaJLE9nMPhoKioCLvd7u5QhACgqKoeux2M/h7uDkUIIYToNmw2mzOBDQ4Obpf2qqurCQ0NbZf2uhqHw4HNZkOlUnVKcm4wGDhz5gxmsxlPT88OP15vJ7cJeriSkhJycnLIzs6mrKzM3eGIXu5oXiWTV+5iyv/torTa7O5whBBCiG6jaQ6sl5dXl2yvt9PpdCgUChoaGtwdSq8gSWwPp9Fo0Gg0WK1WsrKyOHHiBDU1Ne4OS/RCZ8pqmZO8nyqzFVO9lbe/y3Z3SEIIIUS30969ij1pCLE7yfexc0kS28MFBAQwZMgQgoKCUCgU1NTUcOLECbKystq1qp0Q51NW08DdG/ZRXGUmwEsDwJspWdRbbG6OTAghhBBCdDeSxPYCSqWSoKAghg4d6pzzUFpaypEjR8jPz5f5sqJD1TXYuO+N/WSU1BAR4MnH/3Ml4f4elFQ3sOVQnrvDE0IIIUQ3ZTab+f7776mtrT3vfidPnmTs2LE8/PDDnROY6HBS2KkX0Wg0REdHExISQk5ODtXV1eTl5VFSUkKfPn0IDAx0d4iih7Ha7Mz/5w8czK7A31PDG/eOpk+gF3OSolnx6Qle35PBjMQ+MgRHCCGE6MEyMzMpLS0FGofdarVaAgICCA8PR6VStbm9OXPm8MYbbwCgVquJjIzklltu4ZFHHiEnJ4cRI0a4tNuvXz+2bNmCh4cUlewppCe2F/L29mbgwIHExMSg1WppaGggIyODkydPXvBOlhCt5XA4ePLDI+w4UYROrWT93Yn0N/gCMPPyKLy1KlILq9mdVuLmSIUQQgjR0fz8/Bg+fDjDhg0jPDyc4uJicnJyLrq9adOmkZ+fT0ZGBs888wyvvPIKTz75ZLP9LBYLarWakJAQfH19L+UjdKrc3FzuuusugoOD8fLyYsSIERw4cMD5+ubNm5k6dSp6vR6FQsGhQ4dc3p+VlYVCoWjx8e9//9u5X3l5ObNmzcLf3x9/f39mzZrVbB3i7OxsfvWrX+Ht7Y1er2fBggVuL2AlSWwvFhQUxJAhQwgPD0epVFJdXc3x48dlvqxoF6u/SOPd/WdQKuCl3ySQGB3kfM3PQ8Pto6MAeP3rDHeFKIQQQohOolQq0Wg0aLVagoODCQoKoqKiArvdTnZ2NocOHeLAgQPNipBarVYyMjKcr//000/U19ej0+kIDAyksLCQm2++mZkzZ/Lhhx+ybt064uPjWbp0KbGxsXh4eHDixAmX4cRWq5UTJ05w9913YzQa0Wq19O/fn/Xr1wONq3ts2rSJKVOm4OXlRXBwMDfddBN5eZ0zDaq8vJykpCQ0Gg2fffYZx44dY9WqVQQEBDj3qampISkpieeff77FNiIjI8nPz3d5PPXUU3h7e3Pdddc597vjjjs4dOgQW7duZevWrRw6dIhZs2Y5X7fZbNxwww3U1NSwZ88e3n33XTZt2sTixYs77PO3hgwn7uWUSiVhYWEEBweTm5tLWVkZpaWllJeXExYWhsFgkAWbRZv987ts/rojDYDlNw1l6hBjs33uSYpm47eZfJ1WwokCE4OMfp0dphBCCNGtORwO6i6ySKK5wYrd4cBmb3w0aW2tFKWi9RV57Xa783E2m81GdnY25eXlxMbGotVqKSgoIDU1lWHDhqFWq8nLy6O+vp64uDjUajVms7nFa1Nvb28cjsbPkZeXx969e/n3v//d4hDirKwsHn74YY4ePcrq1asJCQkhIyPDudxQQUEBc+fO5fbbb+f555+nvr6eRx55hFtvvZWUlJRWfeZL8cILLxAZGUlycrJzW3R0tMs+TYlmVlZWi22oVCqMRtfrrw8++IDbb78dHx8fAI4fP87WrVvZu3cvV1xxBQCvvfYaY8eO5eTJkwwcOJBt27Zx7Ngxzpw5Q3h4OACrVq1izpw5PPvss/j5uef6TZJYAYBWqyUmJsa5UHNNTQ25ubmUlJQQEREh82VFq20/VsiTH/4EwP9c3Z+7xvRtcb/IIC+uGxrGJz/l8/rXmaycMbwzwxRCCCG6vTqLjfg/fX5R743wVbFskgFrURUKdePa7Xa7nRNHfmzV+2NDfFApW5fE5ubmYrfbqaqqaoy7ro7s7Gy8vb05duwYYWFhDB8+HKVSSd++fTGZTJSUlGA0GjGbzXh5eeHt7Q00rseq1WpdpsB9//33vPPOO0ycOBGAhoYG3nrrLYKCglCpVKSmpjr3ra+v5/Dhw3z++eds376da665BqvVSmBgoDNR3LhxI4MGDWL16tXOJPiVV14hISGB1NRUBgwY0KrP/UtVVVWYTCbnc51Oh06na7bfli1bmDp1KjNmzGDXrl1ERETw4IMPMm/evIs6LsCBAwc4dOgQf//7353bUlJS8Pf3dyawAGPGjMHf359vv/2WgQMHkpKSwtChQ50JLMDUqVMxm80cOHCASZMmXXRMl0K62IQLb29vBg0aRHR0NBqNBrPZTEZGBqmpqTJfVlzQgdPl/M87P2B3wG2JfVh07fl/yc+9KgaA/xzKpchU3xkhCiGEEMINqqqqOHHiBMePHyczMxMvLy8CAwNxOBzOHlBoHCXo7e1NfX3jdYHBYKCsrIyjR486C5MCfPzxxwQHB5OUlMSkSZMYP348L774IgB9+/YlJCSkxTjq6+tJS0tDpVIxYcIEoLE4lIeHh/OYhw8f5vvvv0ev1+Pj44OPjw9XXnklAOnp6Rf9PYiPj3fOPfX39+e5555rcb+MjAzWrFlDXFwcn3/+OQ888AALFizgzTffvOhjr1+/nsGDBzNu3DjntoKCAgwGQ7N9DQYDBQUFzn1CQ0NdXg8MDHT2mruL9MSKFgUHBxMYGEhBQQGFhYVUVVVx/Phx9Ho9ERERqNVy6ghXp4qque+N/dRb7EwaGMKz/2/YBYcZJUQFMqpvIAdOl/NmymkemTqwk6IVQgghuj9PjYpjy6de1HvN9fXk5WQTbfB1GXI7JPyqVr2/LcOJAwICsFgsREVFoVAo0Gg0KJVKamtr8fDwYNiwYeecvubv78+wYcOorKzEZDJx8uRJampqmDRpEn/9619JT09n/Pjx+Pv7O3t6z06KW9JS72fTUGRo7JEeP348r776qnNbZWUl2dnZjB8/vlWfuSXHjh0jIiLivHE0HT8xMZEVK1YAkJCQwNGjR1mzZg2zZ89u83Hr6ur45z//yR//+Mdmr7X0f+hwOFy2t2afziaZiDgnpVJJeHg4er2enJwcysvLKSkpcZkvK0ujCIBCUz13b9hHRa2F4ZEB/P3OkWhUrRvoMe+qGA6cLuet707z0KT+eGrbXmpfCCGE6I0UCgVe2ou7nFfa1SgVClRKhcuwYJWy/f8OK5VK1Gp1s+TS09MTlUpFbW0tnp6eQGMCV1NT49L7p9Fo0Ov16PV6iouLqa+vx9vbm379+lFbW4tGowFal1R7eHjQr18/7HY7u3btcg4nNpvNzmT+sssu48MPPyQ6OtrZcVNeXo7D4XAOa74Yvr6+rZpDGhYWRnx8vMu2wYMHs2nTpos67vvvv09tbW2zBNhoNFJYWNhs/+LiYuf332g08t1337m8Xl5ejsViadZD25lkOLG4IK1WS2xsLAMHDsTLywubzUZOTg5Hjx5tVoJb9D6megtzkveTW1FHjN6bDXcntukP6rXxRqKCvKiotfD+Dxdfal8IIYQQ3YtKpSIkJIScnBwqKyupq6vj9OnT2O129Ho90DiftqKigvr6eurq6qioqDjniECtVgs0FoyyWq0tFqny8PAgPj6eG2+8kXvuuYd//etf7Nq1i0OHDrFt2zYA7rvvPiorK/nNb37Dvn37yMjI4Msvv2T58uXYbBdXSKstkpKSOHnypMu21NRU+vZtuc7Ihaxfv54bb7yx2RDrsWPHUllZyb59+5zbvvvuOyorK53DjseOHcuRI0fIz8937rNt2zZ0Oh2jRo26qHjag/TEilbz8fFh8ODBlJaWkpubi9lsJj09HS8vL+cke41G4yyf3vS1VDfuucxWGw/84wDH803ofXS8cc/lBPu0PDTmXFRKBfcmRbPso2Ns2JPJnZdHoWxloQghhBBCdG99+vQBIDMzE5vNhre3NwMGDHAmqgqFgpycHBoaGlAqlc45qk1Dh8+m1Wrx9fXFYrFw+PBhgoKCiImJabZfdHQ0zz//PM888wzz58+nsrKSqKgonnjiCaCx9zE5OZk33njDWcSoT58+JCYmdsp17cKFCxk3bhwrVqzgtttuY9++faxbt45169Y59ykrKyM7O9u57E9T0ms0Gl2qEp86dYrdu3fz6aefNjvO4MGDmTZtGvPmzXMOnb7//vuZPn06Awc2TvGaMmUK8fHxzJo1ixdffJGysjIeeeQR5s2b57bKxCBJrLgIwcHBBAQEOOfL1tbWnrfok1qtbjG5bfpaq9XKHNtuyG538Mi/f+Tb9FK8tSo23jOaqODzz0E5lxmJkfxleyqZJTXsOFHEtfHuG54ihBBCiPbVUiLZRKlUEhUVRVRUVIuvh4eHu1TGBfjHP/7h/DoxMdHltVWrVrFq1SocDoez17Spym4TtVrNoEGDeOutt1o8pl6v56abbuKmm246/wfrIKNHj+aDDz5gyZIlLF++nJiYGFavXs2dd97p3GfLli3cc889zuczZ84EYOnSpSxbtsy5fcOGDURERDBlypQWj/X222+zYMEC5+s33ngjf/vb35yvq1QqPvnkEx588EGSkpLw9PTkjjvuYOXKle35kdtMMgdxUVQqFREREYSEhFBTU4PFYqGhoQGLxeLytd1ux2q1YrVaqaurO2d7TZP8f5ncarVa/P39pTe3C1rx6XE+OpyHWqlg7axRDI3wv+i2vHVq7riiL2t3pfPa1xmSxAohhBCiV5s+fTrTp08/5+tz5sxhzpw5F2xnxYoVzgJRLQkKCjpnMt8kKiqKjz/++ILH6kw9PomNjo7m9OnTzbY/+OCDLuskNdm5c2eL6x0dP36cQYMGdUiM3VlTonkuNputxeT27G0WiwWHw0FDQwMNDQ3U1NS4tHGuoSDCfV7/OoPX92QC8OKMy7gqruUy9m1x97i+vP51Bvsyy/gxp4LL+gRccptCCCGEEKLn6fFJ7P79+10mYB85coRrr72WGTNmnPd9J0+edBnnfa61psT5qVQqPD09nRXnWuJwOJoluU1fl5WVUV5eTkRExHmTZdF5/nMol2c+OQ7AY9cN4v8l9GmXdsP8PfnV8HA+OJjL619n8tJvEtqlXSGEEEII0bP0+CT2l8nn888/T79+/ZyLG5+LwWAgICCgAyMTTRQKhbNH95dlyy0WC1VVVRQVFTkn/gv3+eZUCY/8+zAAc8ZF89vxse3a/n1XxvDBwVw++Smfx64bRHjAuW9+CCGEEEKI3qnHJ7Fna2ho4K233mLRokUXXEcqISGB+vp64uPjefLJJ1scYtzEbDZjNpudz5uqpVmtViwWS/sEfwmaYugKsbRVUFAQ5eXl5Ofno9frUalkDdHO0NI5cyzfxP3/+B6LzcF1Q0JZMjUOq9XarscdaPBiTEwgezPLWf91Oo9NG9iu7YuO0Z1/xwj3kHNGtJWcMzinX9nt9haXjmkru92Ow+FwPnqyzvh8Tcdo6fq/va+XBCgcPf2sPct7773HHXfcQXZ2drMqZ01OnjzJ7t27GTVqFGazmX/84x+sXbuWnTt3Mn78+Bbfs2zZMp566qlm219//XXnGlfi4mVnZ9PQ0IBer5fecTcprYfVR1SYLAr6+zl4YLANTQfV2jpSruC1Eyo8VA6eGmXDQ+5bCCGEEKjVaoxGI3369EGna9tydi1paGiguLiYqKio8077Eq1TW1tLRkYGBQUFLp1bACUlJcydO5czZ87IyMJ20quS2KlTp6LVavnoo4/a9L5f/epXKBQKtmzZ0uLrv+yJzc3NJT4+nszMTCIiIi4p5vZgsVjYvn071157LRqNxt3htFlJSQnZ2dloNBqGDh16wV50cenOPmeqLQ5mvraPjJJaBob68M/7RuPn2XHnkd3u4LqXvyGjpJbHrxvIPeMubmFv0Xm6++8Y0fnknBFtJedMY89pZmYmKpWKkJAQNBrNJV0TORwOsrOzUavV6PX6S26vK7Lb7Z2ywoXD4aC4uJjKykri4uKa1XHJzc0lJiZGkth21GuGE58+fZovvviCzZs3t/m9Y8aMOW/paZ1O53JHzGQyAf9dH7WraFrCprsJDQ2lqKgIq9VKTU0NgYGB7g6p17A6lPz27QNklNQS7u/BG/deQbCfR4cf976rYnnigyO8uTebe6+MRa2SJZa6g+76O0a4j5wzoq16+zkTGxtLfn4++fn57dKe3W6ntraW7OzsHpfAQmNy2Vmfy+FwEBER0ay+CzTmBKJ99ZrvaHJyMgaDgRtuuKHN7z148CBhYWEdEJVoDaVSSUhICPn5+RQWFkoS20lsDnj4vR85mF2Bv6eGN+69HKN/xyewALeO7MPKz0+SU17H50cLueEy+fkTQgghtFotUVFRWK1Wl9U3LoXD4cBms7Vbe12F1Wpl//79jB49ulOSSE9PT1lJoxP1iiTWbreTnJzM3Xff3ewkXrJkCbm5ubz55psArF69mujoaIYMGeIsBLVp0yY2bdrkjtDFzwwGAwUFBdTU1FBdXY2Pj4+7Q+rRHA4H/85QklJUjE6t5PW7E4kL9e2043toVMwa05eXvjzF63syJIkVQgghfqZQKHp9j3RrWCwWzGYzfn5+8r3qgXrFGL0vvviC7Oxs7r333mav5efnk52d7Xze0NDAI488wmWXXcZVV13Fnj17+OSTT7jllls6M2TxC2q1muDgYAAKCwvdHE3P97evMkgpUqJUwF9nJjA6OqjTY5g1NhqtSsnB7AoOnC7r9OMLIYQQQoiuqVf0xE6ZMuWcpbU3btzo8vzRRx/l0Ucf7YSoRFuFhoZSUlJCRUUFZrO5XSrziea2HS3gpa/SAfjT9MFMG2p0SxwhvjpuTgjnve9zeP3rTEb17fxEWgghhBBCdD29oidW9AweHh74+/sD0hvbkd77PgeAq0Lt3Hl5pFtjmXtVLACfHy0gu7TWrbEIIYQQQoiuQZJY0a2EhoYCUFpaKgtHd4B6i409p4oBGBN66QupX6oBob6MHxCC3QEbvsl0dzhCCCGEEKILkCRWdCu+vr54eXlht9spLi52dzg9Tkp6KfUWO0Y/HRFe7o6m0byrYgB47/szVNZa3ByNEEIIIYRwN0liRbfT1BtbXFx8zrnO4uLsONE4THvSwBC6ynJxV/bXM8joS22DjXf2Z1/4DUIIIYQQokeTJFZ0O4GBgWg0GiwWC2VlUrW2vTgcDr48XgQ0JrFdhUKh4L4rG3tjN36TRYPV/cOchRBCCCGE+0gSK7odhUKBwWAApMBTezqeX0VeZT0eGiVjY7tWJeAbR4QT4qujwFTPpz/luzscIYQQQgjhRpLEim4pJCQEpVJJXV0dJpPJ3eH0CF/+PJT4yv56PDQqN0fjSqdWcffYvgC89nWGDCMXQgghhOjFJIkV3ZJKpUKv1wPSG9tevvh5KPHVg0LdHEnL7ryiLx4aJUfzTOzNkGHkQgghhOi5cnNzueuuuwgODsbLy4sRI0Zw4MAB5+ubN29m6tSp6PV6FAoFhw4darGdlJQUrr76ary9vQkICGDixInU1dUBsHPnThQKRYuP/fv3O9to6fW1a9d26Oe/EEliRbfVNKTYZDI5fxjFxSmuMnM4pwKAqwcZ3BvMOQR6a/n1qD4AvP51hpujEUIIIYToGOXl5SQlJaHRaPjss884duwYq1atIiAgwLlPTU0NSUlJPP/88+dsJyUlhWnTpjFlyhT27dvH/v37mT9/PkplYwo4btw48vPzXR5z584lOjqaxMREl7aSk5Nd9rv77rs75LO3ltqtRxfiEuh0OgIDAykvL6ewsJDo6Gh3h9RtfXWyCIcDhkb4YfT3wGLpmkvZ3JsUw9vfZbPjRBHpxdX0C/Fxd0hCCCGEEO3qhRdeIDIykuTkZOe2X17nzpo1C4CsrKxztrNw4UIWLFjAY4895twWFxfn/Fqr1WI0Gp3PLRYLW7ZsYf78+Sh+sUxFQECAy77uJj2xoltrWm6nrKysyyZe3cGXXXwocZPYEB8m/xzj+j2Zbo5GCCGEEKL9bdmyhcTERGbMmIHBYCAhIYHXXnutTW0UFRXx3XffYTAYGDduHKGhoUyYMIE9e/ac97glJSXMmTOn2Wvz589Hr9czevRo1q5di93u3tUiJIkV3Zq3tzc+Pj44HA6Ki4vdHU63ZLba+Dqt8Xt3zeCuOZT4bHOvalxuZ9OBHMpqGtwcjRBCCCFE61RVVWEymZwPs9nc4n4ZGRmsWbOGuLg4Pv/8cx544AEWLFjAm2++2epjZWQ0Tr1atmwZ8+bNY+vWrYwcOZLJkyeTlpbW4nvWr1/P1KlTiYyMdNn+9NNP8+9//5svvviCmTNnsnjxYlasWNHqWDqCJLGi22vqjS0uLnb7XaHu6LuMMmoabIT46hga7u/ucC7oipgghkX4Y7baeWvvaXeHI4QQQgjRKvHx8fj7+zsfzz33XIv72e12Ro4cyYoVK0hISOC3v/0t8+bNY82aNa0+VtM18W9/+1vuueceEhIS+L//+z8GDhzIhg0bmu2fk5PD559/zn333dfstSeffJKxY8cyYsQIFi9ezPLly3nxxRdbHUtHkCRWdHv+/v7odDqsViulpaXuDqfb+fLEz0OJBxpQKhUX2Nv9FAqFszf2zZQs6i02N0ckhBBCCHFhx44do7Ky0vlYsmRJi/uFhYURHx/vsm3w4MFkZ2e3+lhhYWEArW4nOTmZ4OBgbrzxxgu2PWbMGEwmk1tXCJEkVnR7CoXCWam4sLBQ1hBtA4fDwY6f14ed3A2GEje5flgYYf4elFQ3sOVQnrvDEUIIIYS4IF9fX/z8/JwPnU7X4n5JSUmcPHnSZVtqaip9+/Zt9bGio6MJDw9vVTsOh4Pk5GRmz56NRqO5YNsHDx7Ew8PDpVpyZ5PqxKJH0Ov15OXlYTabqaysdOsPVXeSVlTNmbI6tGolSf317g6n1TQqJXPGRfPcZyd4fU8GMxL7NKuiJ4QQQgjRHS1cuJBx48axYsUKbrvtNvbt28e6detYt26dc5+ysjKys7PJy2u8md+UrBqNRoxGIwqFgt///vcsXbqU4cOHM2LECN544w1OnDjB+++/73K8L7/8kszMzBaHEn/00UcUFBQwduxYPD09+eqrr3jiiSe4//77z5mEdwbpiRU9glKpJCQkBMCtQxu6mx0/VyUeGxuMt6573dOaeXkU3loVqYXV7E4rcXc4QgghhBDtYvTo0XzwwQe88847DB06lKeffprVq1dz5513OvfZsmULCQkJ3HDDDQDMnDmThIQE1q5d69zn4YcfZsmSJSxcuJDhw4ezY8cOtm/fTr9+/VyOt379esaNG8fgwYObxaLRaHjllVcYO3Ysl112GX/9619Zvnw5q1at6qBP3zrd66pViPMwGAwUFhZSXV1NTU0N3t7e7g6py/vy56HE3aEq8S/5e2q4bXQkyd9k8frXGUwYEOLukIQQQggh2sX06dOZPn36OV+fM2dOi0vh/NJjjz3msk5sS/75z3+e87Vp06Yxbdq0Cx6ns0lPrOgxNBoNQUFBgPTGtkZ5TQMHTpcDMGlQ90tiAe5NikGpgK/TSjhRYHJ3OEIIIYQQohNIEit6lKbldioqKmhokDVEz2dnahF2Bwwy+tIn0Mvd4VyUyCAvpg01AvD615lujkYIIYQQQnQGSWJFj+Lp6Ymfnx8Oh4OioiJ3h9OlNc2H7U5ViVsy96pYAP5zKJciU72boxFCCCGEEB1NkljR4zQtt1NSUoLNJmuItsRis7MrtRiAqweFujmaSzMyKpCRUQFYbA7eTDnt7nCEEEIIIUQH6/FJ7LJly1AoFC4Po9F43vfs2rWLUaNG4eHhQWxsrEuVL9H1+fv74+Hhgc1mo6REqta2ZH9WGVX1VoK9tYyIDHB3OJds3s+9sW99d5q6BrlxIYQQQgjRk/X4JBZgyJAh5OfnOx8//fTTOffNzMzk+uuv56qrruLgwYM8/vjjLFiwgE2bNnVixOJSNc2NLSoqwuFwuDmarufLn4cSTxxoQKXs/uurThliJDLIk4paC+//kOPucIQQQgghRAfqFUmsWq12LvxrNBqd64m2ZO3atURFRbF69WoGDx7M3Llzuffee1m5cmUnRiwuVVBQEGq1moaGBsrLy90dTpez40TPmA/bRKVUcG9SDAAb9mRit8uNCyGEEEKInqpXrBOblpZGeHg4Op2OK664ghUrVhAbG9vivikpKUyZMsVl29SpU1m/fj0WiwWNRtPsPWazGbPZ7HxeVVUFgNVqxWKxtOMnuThNMXSFWDpTYGAg+fn55OTk4Ovr6+5wuozMkhoyS2rQqBSMiQ5o8bzojufMzcON/GV7KpklNby2+xRzxvZF2QN6mbuD7ni+CPeSc0a0lZwzoq260jljtVrdHUKPo3D08LGWn332GbW1tQwYMIDCwkKeeeYZTpw4wdGjRwkODm62/4ABA5gzZw6PP/64c9u3335LUlISeXl5hIWFNXvPsmXLeOqpp5ptf/3119Hr9e37gUSr2Ww2Tp8+jd1uJyIiAk9PT3eH1CV8lafgw9MqBvjbeSje7u5w2tUn2Uq25TYOMOnj7eDmvnbi/Hv0rzghhBBCdHElJSXMnTuXM2fO0KdPH3eH0yP0+J7Y6667zvn1sGHDGDt2LP369eONN95g0aJFLb5HoXDtvWnK83+5vcmSJUtc2srNzSU+Pp7JkycTERFxqR/hklksFrZv3861117bYk9yT5adnU1JSQl+fn7079/f3eF0Cf/csB8oZ0bSYK4f27fFfbrrOXOtzc6Gb06zZncGOTU2/nZMxTWDQnh06gBi9N7uDq/H6q7ni3AfOWdEW8k5I9qqK50zubm5bj1+T9Tjk9hf8vb2ZtiwYaSlpbX4utFopKCgwGVbUVERarW6xZ5bAJ1Oh06ncz43mUxA41xcd//QnE2j0XSpeDpDREQEFRUV1NbWYrPZ8PDwcHdIblVZZ+H70xUATBkSdsHzobudMxoNzJ88gJlX9GX1F6m8s+8MX5woZmdqCXeN6cuCyXEEeWvdHWaP1d3OF4DKykry8/MJDAwkJCQEpbJXlIroMrrjOSPcS84Z0VZd4ZxRq3tdytXhet1fa7PZzPHjx1scFgwwduxYtm/f7rJt27ZtJCYmuv0HQLSdh4cH/v7+QOPNiN5ud2oxNruD/gYf+gb33J5JvY+OZ24exucPX8XVgwxY7Q42fpvFhBe/Yt3udMxWWYZHNI6yyc7OpqamhpycHH766ScKCwux23vWMHshhBCip+nxSewjjzzCrl27yMzM5LvvvuPXv/41JpOJu+++G2gcCjx79mzn/g888ACnT59m0aJFHD9+nA0bNrB+/XoeeeQRd30EcYmaltspLS3t9RPrdxwvBGDyoJ5RlfhC+ht82TBnNG/PvYLBYX5U1VtZ8ekJrvnLLj7+MU+WX+rlSkpKaGhoQK1Wo9PpsFqtkswKIYQQ3UCPT2JzcnL4zW9+w8CBA7nlllvQarXs3buXvn0b5wLm5+eTnZ3t3D8mJoZPP/2UnTt3MmLECJ5++mleeuklbr31Vnd9BHGJfH198fLywm63U1xc7O5w3MZqs7MztfHzTx4c6uZoOldSfz0f/8+V/PnXl2Hw1XGmrI75/zzIrWu+5cBpWYKpN3I4HM6pI+Hh4QwZMoTo6GhJZoUQ7a6+vp6Kigp3hyFEj9LjB2i/++67531948aNzbZNmDCBH374oYMiEu4QGhpKZmYmRUVFhIaG9sp5bwfPVFBRa8HfU8PIqAB3h9PpVEoFtyVGMv2yMNbtzuDVXRn8kF3BrWu+5YbLwnhs2iAig7zcHaboJE29sBqNhuDgYBQKBcHBwQQFBVFWVkZ+fj5ms5mcnBwKCgqca4z3xt8dQoiLV1JSQnZ2Ng6Hg5iYGIKCgtwdkhA9gvw1Fr1CYGAgWq0Wq9VKWVmZu8Nxiy9+Hko8cWAIalXv/dH30qp5+JoB7Pz9RGaM6oNCAZ/8mM/kVbt47tPjVNa5fz050bHO7oUNCwtzSUybktlz9cwWFBRIz6wQ4oLsdjunT5/m9OnTzqkrvywcKoS4eB3eE1tZWckHH3zA119/TVZWFrW1tYSEhJCQkMDUqVMZN25cR4cgBAqFAoPBQE5ODoWFhb1y/d4vjzcWtuptQ4nPJdTPgxdnDGdOUjQrPj3ON6dKeXV3Bu99f4aHrxnAHVdEoenFyX5P9ste2Jacq2c2NzeXwsJCQkNDMRgM0jMrhGimoaGB9PR0amtrgcabZUVFRdTV1VFRUUFAQIB7AxSiB+iwv775+fnMmzePsLAwli9fTk1NDSNGjGDy5Mn06dOHr776imuvvZb4+Hj+9a9/dVQYQjjp9XpUKhX19fXOZZB6i+zSWtKKqlEpFUyIC3F3OF3KkHB/3rrvCjbMSaS/wYfyWgtLtxxl6urdbD9WKMWfepjz9cK25Fw9s7m5udIzK4RoxmQycfz4cWpra1Gr1cTFxREeHk5ISOPfXumNFaJ9dFhP7PDhw5k9ezb79u1j6NChLe5TV1fHhx9+yF/+8hfOnDkjFYBFh1KpVOj1egoLCyksLMTPz8/dIXWaHScahxKPjg7E30uWivolhULB1YNCGR8Xwjv7z7B6eyoZxTXMe/N7xsQG8eQN8QyN8Hd3mKIdtKYXtiWt6ZkNCQlBpVJ1YPRCiK4sPz+fvLw8ALy8vOjXrx9abePa5AaDgaKiImpqaqiqqsLX19edoQrR7XVYT+zRo0dZuXLlORNYAE9PT37zm9/w3XffOZe8EaIjGQwGFAoFJpOJuro6d4fTab488fNQ4kEylPh81Cols8b05avfT+R3E/uhVSvZm1HGr/62h0XvHSK/svecMz1RW3thW3K+ntkjR45QUFCAzSbrEAvRm9hsNtLT050JrF6vZ+DAgc4EFnC5cSa9saI1cnNzueuuuwgODsbLy4sRI0Zw4MAB5+ubN29m6tSp6PV6FAoFhw4darGdlJQUrr76ary9vQkICGDixIku18DR0dEoFAqXx2OPPebSRnZ2Nr/61a/w9vZGr9ezYMECGhoaOuRzt1aHJbFNwyYAampq2rS/EB1Fq9U656IUFha6N5hOUm22sjejFICrB/eO9WEvlZ+Hhj9MG8SXiydw04hwHA7Y/EMuk1bu5O9fnZIhxt3UxfbCtuTsZDYmJkaSWSF6qbq6Oo4fP05FRQUKhYK+ffvSt2/fFm+SGY1G54301lwbi96rvLycpKQkNBoNn332GceOHWPVqlUu86lrampISkri+eefP2c7KSkpTJs2jSlTprBv3z7279/P/Pnzm52fy5cvJz8/3/l48sknna/ZbDZuuOEGampq2LNnD++++y6bNm1i8eLF7f6526JTltgJDQ3ltttu49577+XKK6/sjEMKcU6hoaGUl5dTVlZGREQEGk3PHl77dWoxFpuDGL03/UJ83B1Ot9In0Iu/zkzgnqQYnv3kGPuzynnx85M4HA7mXx3n7vBEG7RHL2xLFAoFQUFBBAYGUl5eTn5+PvX19TLMWIheoKysjNOnT2O329FqtfTr1w8vr3Mv1abVagkKCqK0tJSCggL69evXidGK7uSFF14gMjKS5ORk57bo6GiXfWbNmgVAVlbWOdtZuHAhCxYscOlZjYtrfv3i6+uL0WhssY1t27Zx7Ngxzpw5Q3h4OACrVq1izpw5PPvss26bntcpZRXfeecdKisrmTx5MgMGDOD55593DrkQorN5e3vj4+ODw+GgqKjI3eF0uB0/DyW+epD0wl6sEZEBvPfbsTx5w2AAVm5L5b3vz7g5KtEW7dkL25KmZDY+Pp6YmBg8PDycPbOHDh3i2LFjZGdnU1ZWhtlsbvfjCyE6j8Ph4MyZM2RmZmK32/Hz82Pw4MHnTWCbNCUKFRUV1NfXd3SoooupqqrCZDI5H+f6e7BlyxYSExOZMWMGBoOBhIQEXnvttTYdq6ioiO+++w6DwcC4ceMIDQ1lwoQJ7Nmzp9m+L7zwAsHBwYwYMYJnn33WZahwSkoKQ4cOdSawAFOnTsVsNrsMb+5snZLE/upXv2LTpk3k5eXxu9/9jnfeeYe+ffsyffp0Nm/ejNVq7YwwhHAKDW2cG1pcXNyjLyjtdgdfOefDShJ7KRQKBXOviuWBCY13zpds/sn5vRVdW0f1wrbkl8msp6cn0DjksLi4mMzMTI4cOcKPP/5IRkaGs9CLDFEXonuwWCykpqY6b4IbjUb69++PWt26wY0eHh7OIaEyN7b3iY+Px9/f3/l47rnnWtwvIyODNWvWEBcXx+eff84DDzzAggULePPNN1t9rIyMDACWLVvGvHnz2Lp1KyNHjmTy5MmkpaU59/vf//1f3n33Xb766ivmz5/P6tWrefDBB52vFxQUOK+bmwQGBqLVat16DnfKcOImwcHBLFy4kIULF/Lyyy/z+9//nk8//RS9Xs8DDzzAY4891qq7WEJcKn9/fzw9Pamrq+PkyZPExcU5LzZ7kkM5FZTWNOCrUzM6Jsjd4fQIf5g2kCJTPZsP5vLg2z/wzv1jGBEZ4O6wxHl0dC9sS5qS2aCgICwWC9XV1dTU1FBdXU1tbS0Wi4Xy8nLKy8sBUCqVeHt7O0eKeHt7t/qiWAjROaqrq8nIyMBisaBSqYiOjr6oNV/DwsKoqKigrKyM8PBwlwJQomc7duwYERERzuc6na7F/ex2O4mJiaxYsQKAhIQEjh49ypo1a5g9e3arjtW0/Ntvf/tb7rnnHmc7O3bsYMOGDc4EeuHChc73XHbZZQQGBvLrX//a2TsLjX/TfsnhcLS4vbN06l/IgoIC3nzzTZKTk8nOzubXv/419913H3l5eTz//PPs3buXbdu2dWZIopdSKBTExcWRlpZGXV0dqampxMXF9bibKF8eb7xTPH5gCBpVpwy86PEUCgUv/PoyiqvNfJ1Wwr0b97Ppd+OI0Xu7OzTRgs7shT0XjUZDYGAggYGBQOOFRW1tLdXV1c7k1mq1UlVVRVVVlfN9Hh4e+Pj4OB/nutgRQnS8oqIicnJycDgceHp6Ehsbi4eHx0W15eXlhZ+fHyaTiYKCAqKioto5WtFV+fr6tmoOaVhYGPHx8S7bBg8ezKZNm1p9rLCwMIAW28nOzj7n+8aMGQPAqVOnCA4Oxmg08t1337nsU15ejsViadZD25k6JYndvHkzycnJfP7558THx/PQQw9x1113udy9GjFiBAkJCZ0RjhBA44XlgAEDOHXqFDU1NaSmptK/f398fHpO8aMvjjdWYJahxO1Lo1Ky5q5R/GbdXn7KrWT2hu/Y/LskQnwlyehq3NELeyFKpdKZmDapr693SWrr6+udj5KSEgDUarXzfU29tu68Cy5Eb2C32zl9+jRlZWUABAUFnbP6cFsYjUZMJhMlJSWEhYX1+CKTom2SkpI4efKky7bU1FT69u3b6jaio6MJDw9vsZ3rrrvunO87ePAg8N8keOzYsTz77LPk5+c7t23btg2dTseoUaNaHU9765Qk9p577mHmzJl88803jB49usV9YmNjeeKJJzojHCGc1Go1cXFxnDp1iurqatLS0ujXr5/bKq21p9yKOk4UVKFUwMSBksS2Nx+dmg1zRnPrmm/JLqvlno37ePf+sfjoZAhoV9EVemFby8PDAw8PD/R6PQBWq9VlCHJTb21FRQUVFRVA46gAX19foqOj5QJYiA5gNptJT0+nrq4OhUJBnz59MBja5++pr68v3t7e1NTUUFRU5DLEVIiFCxcybtw4VqxYwW233ca+fftYt24d69atc+5TVlZGdna2s1huU7JqNBqdyzn9/ve/Z+nSpQwfPpwRI0bwxhtvcOLECd5//32gsWjT3r17mTRpEv7+/uzfv5+FCxdy4403OkcITJkyhfj4eGbNmsWLL75IWVkZjzzyCPPmzXPr9XKnXG3l5+dfcJimp6cnS5cu7YxwhHChUqmIi4sjIyODyspKTp06RWxs7EXNc+lKvvy56NDIqECCvGW+TUcI8dXxxr2Xc+uabzmSa+J3bx1g/d2j0aq7brLUm3TFXtjWUqvVBAQEOH8PORwOampqnEltdXU1VqsVk8lETk4OMTEx7g1YiB6moqKCrKwsbDYbGo2G2NjYdh+pFRYWxqlTpyguLsZoNMpSXMJp9OjRfPDBByxZsoTly5cTExPD6tWrufPOO537bNmyxTnXFWDmzJkALF26lGXLlgHw8MMPU19fz8KFCykrK2P48OFs377dubyTTqfjX//6F0899RRms5m+ffsyb948Hn30UWe7KpWKTz75hAcffJCkpCQ8PT254447WLlyZSd8J86tU5JYX19f8vPzm929Ki0txWAwyILwwu2USiX9+vUjMzOT8vJyMjIyiI6OJiio+xZD2vHzUOKrB0svbEeK0XuzYc5ofrNuL1+nlfDYph9ZddtwGebpZt2pF7Y1FAqFcyhx0xykqqoqUlNTKS8vJzw8XObMCtEOHA4HeXl5zt8fPj4+xMbGdshoh7OLTBYVFTmHagoBMH36dKZPn37O1+fMmcOcOXMu2M5jjz3msk7s2UaOHMnevXsv2EZUVBQff/zxBffrTJ3yV/1cSweYzWapyCa6DIVCQUxMDMHBwTgcDjIzMykuLnZ3WBeltsHKt+mlAFwz2H2T7nuLEZEBvHLXSFRKBZsP5vLC1pMXfpPoUN25F7a1mgqEOBwOCgsL3R2OEN2e1Wrl1KlTzgTWYDAwYMCADh2u37RubFFRkbOarBDiwjq0J/all14CGpOD119/3WUYhs1mY/fu3QwaNKgjQxCiTRQKBdHR0SiVSoqLi8nOzsZut7u1+trF+OZUKQ1WO30CPYkz9JxCVV3ZpIEGnr9lGL9//0fW7krH6KdjTpIM8XSHntYLez5NxWFKS0ulOIwQl6C2tpb09HQaGhpQKpX07du3U0ZjBQYGkpeXh9lspqSkpN3m3ArR03VoEvt///d/QOMFxdq1a13G+mu1WqKjo1m7dm1HhiDERYmKikKlUlFQUEBOTg42m43w8HB3h9VqTUOJrxkcKsNaO9GMxEgKTfWs3JbKUx8fI8TXgxsuk+Fhna039MI2keIwQlwam81GQUEBhYWFOBwOdDod/fr167S14xUKBUajkdOnT1NYWEhISIj83RaiFTo0ic3MzARg0qRJbN682blGnhDdQUREBCqVitzcXPLz87HZbERGRro7rAuy2x3Ook5Xy9I6ne6hSf0pNJn5x97TLPzXIYJ9tIyJ7dmJVFfSm3phmxiNRtLT06U4jBBtVFpaSm5uLhaLBYCAgACio6M7/WcoODiYvLw8GhoaKCsr6/E334RoD53y1/2rr74iMDCQkpISTCZTZxxSiHZhNBqdiWtRURGnT58+5xzvruJonomiKjPeWhVXxHbfwlTdlUKhYNmNQ5g6JJQGm515b37PiQL5vddZelMvbJOAgAA8PDyw2WzONWWFEOdWXV3N8ePHycrKwmKxoNPp6N+/P/369XPLTSCFQuGctlRQUNDlrzOE6Ao6PImtqKjgoYceQq/XExoaSmBgIEajkSVLllBbW9vRhxfikhkMBqKjo4HGC+SsrKwu/Qfmi5+HEl8VF4JOLT0y7qBSKvjrzAQS+wZSVW9lzob95FXUuTusHq839sI2aSoOU1hY2OuLw9TV1fHjjz+SkZHh7lBEF9PQ0EBGRgYnT56ktrYWlUpFnz59GDJkCP7+/m6NTa/Xo1KpqK+vd64FLYQ4tw4dTlxWVsbYsWPJzc3lzjvvZPDgwTgcDo4fP87LL7/M9u3b2bNnD4cPH+a7775jwYIFHRmOEBctODgYpVJJZmYmZWVl2Gw2YmNju+RFsnMosSyt41YeGhWv353Ir9emcKqomrs37OPfD4wlwEsqsneU3tgL2yQoKMhlOKJer3d3SG5hNptJS0vDYrFQXl5ObW3tBdepFz2f3W53znttusmj1+uJiIhAre6U1SYvSKVSYTAYyM/Pp6CgQKbgCXEBHXoFvnz5crRaLenp6bz66qs8/PDDLFy4kHXr1nHq1CkaGhqYNWsWU6ZM6bA7YM899xyjR4/G19cXg8HAzTffzMmT51/+YufOnSgUimaPEydOdEiMonsIDAykX79+KJVKKisrOXXqVJfr8Sg01fNTbiUKRWO1XOFeAV5a3rj3cox+HqQVVTPvze+pt8i62B2hN/fCggxHBLBYLM4Etkl3XSZNtJ/S0lKOHDlCfn4+drsdX19f4uPj6du3b5dJYJsYDAaUSiW1tbUy/U6IC+jQv/IffvghK1eubHF5EqPRyJ///Gc2bdrEokWLuPvuuzskhl27dvHQQw+xd+9etm/fjtVqZcqUKdTU1FzwvSdPniQ/P9/5iIuL65AYRffh7+9P//79USqVVFVVkZqais3WdZKSpl7Y4X0CCPHVuTkaARAR4MnGe0fj66Fmf1Y5C945iM3e+xKMjtabe2Gb6PV61Go1ZrO51w1HtNlspKWlYTab0el0xMbGAo0JjNVqdXN0wh1qamo4ceKEy7zXfv36MWDAgE6rPNxWarWakJAQAPLz890cjRBdW4cmsfn5+QwZMuScrw8dOhSlUsnSpUs7LIatW7cyZ84chgwZwvDhw0lOTiY7O5sDBw5c8L0GgwGj0eh8SMVHAY1LWgwYMACVSkVNTQ2pqald5iJpx/HGJHayVCXuUgYZ/Vg3KxGtSsm2Y4Us3XKkV/aUdZTe3gvbRKlUOi+Am74fvYHdbufUqVPU1dWh0WiIi4sjMDAQLy8vHA6HFLvqZRoaGsjMzOTEiRPU1NSgVCqJiIggPj6egIAAd4d3QaGhjUvjVVdXU11d7e5whOiyOnQchV6vJysriz59+rT4emZmZqcv6lxZWQnQqgWsExISqK+vJz4+nieffJJJkya1uJ/ZbMZsNjufV1VVAWC1Wl2GNblLUwxdIZaeQqvVEhsbS1paGiaTiSNHjhAXF4dW6775jvUWG9+cahw6Nz4u6JL+v+WcaX+JUX6s/PVQ/ve9H3lrbzYh3loenBjr7rDahbvPUGbUtQAAkpFJREFUl+LiYmpra1Gr1fj5+fXq8zYwMJCcnBxMJhOlpaX4+fm5O6QWtdc543A4SE9Px2QyoVQq6du3L0qlEovFQmBgICaTiby8PIKCgmTtzW7uQueM3W6nsLDQZTh9cHAw4eHhaDQabDZblxo5dT5+fn6UlpZy5swZ+vfv7+5wui13/206W1fp7OhJFI4O7A647777OHXqFNu3b292cW82m5k6dSqxsbFs2LCho0Jw4XA4uOmmmygvL+frr78+534nT55k9+7djBo1CrPZzD/+8Q/Wrl3Lzp07GT9+fLP9ly1bxlNPPdVs++uvv95ri2v0Fg0NDeTl5WG1WlGr1URERKDRaNwSy9FyBetOqAjQOlg20oZcr3VNu/MVbMpqHNXxm342xhikR/ZSOBwOTp8+jdVqJSQkxO0VRruC4uJiKisr8fT0JCIiwt3hdKjCwkKqqqpQKpWEhYW5DBN1OBxkZWVhs9kwGo34+Pi4MVLRkaqqqlyGjnt6eqLX69Hpuue0GovFwunTpwGIjIzstp9D/FdJSQlz587lzJkz5+zcE23ToUlsTk4OiYmJ6HQ6HnroIQYNGgTAsWPHeOWVVzCbzezfv5+oqKiOCsHFQw89xCeffMKePXvafAL96le/QqFQsGXLlmav/bInNjc3l/j4eDIzM7vEBYTFYmH79u1ce+21bkuwerKGhgZSU1NpaGhArVYzYMAAPDw8Oj2OpR8d45/7cvjN6D4svzH+ktqSc6ZjvbgtlXVfZ6FSKlh75wgmDghxd0iXxJ3nS3FxMWfOnEGtVjunqPR2DQ0NHD16FIfDwcCBA/H29nZ3SM20xzmTk5NDUVERCoWCmJiYFoeK5uXlUVBQgLe3NwMHDrzEqIU7tXTO1NTUcObMGeeSjRqNhj59+vSIyr6ZmZmUl5cTEBDgnOMt2qYrXcvk5uYSExMjSWw76tDhxH369CElJYUHH3yQJUuWOId3KBQKrr32Wv72t791WgL7P//zP2zZsoXdu3df1MkzZswY3nrrrRZf0+l0LnfJmirKqdVqt//QnE2j0XSpeHoKjUbD0KFDSUtLo66ujoyMDOLi4jp1WQeHw8HOk43zvq4dYmy3/2c5ZzrGkuvjKam2sPlgLgve/ZF37h/DiMgAd4d1yTr7fHE4HJSWlqJWq4mKipLeip9pNBoMBgOlpaWUlpZ26XmAF3vOFBQUUFZWhlqtJjo6+pzFvMLDwyktLcVsNmOxWGS5nR6g6XzJzc2ltLQUaJziYzQaCQ0N7TE3siIjI6mqqqK6uhqbzeaWm+M9RVe4lulqlbB7gg7/SY+JieGzzz6jpKSEvXv3snfvXoqLi9m6dWunjPN3OBzMnz+fzZs38+WXXxITE3NR7Rw8eJCwsLB2jk70FBqNhgEDBuDl5YXVaiU1NbVTCzIcz68ir7IeD42Scf1kCHtXp1AoeOHXl3FVnJ46i417N+4ns+TCFdOFK6lIfG5GoxGAiooK6uvr3RxN+yopKSE3NxdovFl+vv97jUbjTOJluZ3uz263k5+fz5EjR5wJbHBwMEOHDu1xRd08PT2d0yMKCwvdHI0QXU+n/bQHBgZy+eWXc/nll7eqqFJ7eeihh3jrrbf45z//ia+vLwUFBRQUFFBXV+fcZ8mSJcyePdv5fPXq1Xz44YekpaVx9OhRlixZwqZNm5g/f36nxS26n6ahxD4+Ps7lHpqKfHW0L080/oG7sr8eD41U0e4ONCola+4axbAIf8pqGpi94TuKq8wXfqMApCLxhXh4eDiTt55Uqbi8vNw5V7Cp5+1CmgpIynI73VtVVRXZ2dnO9V69vb0ZNGgQ0dHRbu9l6yhNnSelpaU0NDS4ORohupYO69t+4IEHeOKJJ4iMjLzgvv/617+wWq3ceeed7R7HmjVrAJg4caLL9uTkZObMmQM0LgWUnZ3tfK2hoYFHHnmE3NxcPD09GTJkCJ988gnXX399u8cnehaVSkVcXJyzWmZmZibx8fEdPoxkx8/rw1496MIXdKLr8NGp2TBnNLeu+Zbsslru2biPu67o22HHGx4ZwOCwrlmttq2kF/bCjEYjFRUVlJWVER4e7tbq6e2hqqqKzMxMoHH1g9bWnPDx8cHLy4va2lpKSkqcvdQXq6K2gYNnKpg4IEQqHneSuro6Tp06hdVqRaPREB0d3akdIu7i7e2Nr68vVVVVFBYWtuqaWojeosOurENCQhg6dCjjxo3jxhtvJDExkfDwcDw8PCgvL+fYsWPs2bOHd999l4iICNatW9chcbSmbtXGjRtdnj/66KM8+uijHRKP6PmUSiX9+vXj+PHj1NfXk52d3aFFGUqqzRw6UwHA1bI+bLcT4qvjjXsv59Y133Ik18Rjm3/qsGP56NSkLLkaX4/u3WshvbCtc/YFcFFRUbcuJlJbW8upU6dwOBwEBAS0uZ6GwWAgKyuL4uJi5zqcF8Nud3B38n4On6nghVuHcfvozqnr0ZtZrVbS09NxOBx4eXkxZMiQXjX/3Wg0UlVVRUlJCWFhYTK3UnRrp06dIj09nfHjx+Pp6YnD4bjo38cd9pf/6aefJi0tjfHjx7N27VrGjBlDVFQUBoOBgQMHMnv2bDIyMnj99ddJSUlh2LBhHRWKEJ1OqVQSHR2NQqGgvLycsrKyDjvWVyeKcDhgaIQfRn8p/NAdxei9eXvuFdw0IpxrBhs65BHsraXabGXrke4/tFR6YVuvqdexuLi42w6lra+vJy0tDbvdjq+vLzExMW2+6AkKCkKtVtPQ0EBFRcVFx/Le92c4/PNNw1d3Z2C3yxJZHcnhcJCZmYnZbEar1faowk2t5efnh5eXF3a7naKiIneHIzpRbm4ud911F8HBwXh5eTFixAgOHDjgfH3z5s1MnToVvV6PQqHg0KFDLbaTkpLC1Vdfjbe3NwEBAUycONE5rTIrK4v77ruPmJgYPD096devH0uXLm02fF2hUDR7rF27ttWfpbS0lGuuuYYBAwZw/fXXk5+fD8DcuXNZvHhxG78zjTr0do7BYGDJkiUsWbKEiooKTp8+TV1dHXq9nn79+skwHNGjeXt7ExYWRl5eHtnZ2fj4+HTIcL4vfx5KPFmGEndrg8P8+OvMhA5r/+Udaazansp/DuUxI7H7DkmTXti2aboArq2tpbi4uNsVKGxoaCAtLQ2r1YqXlxf9+vW7qP9zhUJBSEgI+fn5FBUVXdQSLBW1Dbyw9YTzeUZxDTtTi2QaRwfKzc3FZDI5RzidPfWrNzEajWRkZFBUVERoaCgqldS+6OnKy8tJSkpi0qRJfPbZZxgMBtLT012qzdfU1JCUlMSMGTOYN29ei+2kpKQwbdo0lixZwssvv4xWq+Xw4cPO36MnTpzAbrfz6quv0r9/f44cOcK8efOoqalh5cqVLm0lJyczbdo05/O2rMu+cOFC1Go12dnZDB482Ln99ttvZ+HChaxatarVbTXptDEJAQEBXbrMvxAdwWg0UllZSU1NDVlZWQwYMKBd2zdbbexObay4OXmwDCUW53bTiAhWbU/lm/QSCk31hPp1z1576YVtu19eAHeXxN9qtZKWlkZDQwMeHh7ExcVd0sV7SEgIBQUFVFdXU1tb2+bldlZuO0l5rYWBob4k9dez4ZtMXtudKUlsBykrK3NW5Y2OjsbT09PNEblPYGAgHh4e1NfXU1JS0qqCZqJ7e+GFF4iMjCQ5Odm5LTo62mWfWbNmAY29qeeycOFCFixYwGOPPebcFhcX5/x62rRpLolpbGwsJ0+eZM2aNc2S2ICAgIuuKbBt2zY+//zzZtNa4uLinMX62qp7/CUToptSKBRER0ejVCqd89La077MMmoabIT46hga3vo7YqL3iQr2YlTfQBwO+OhwnrvDuSjSC3txAgIC0Ol0WK1WSkpK3B1Oq9jtdk6dOkV9fT0ajYa4uLhLngt4KcvtHMmt5O3vGnsBn7ppCHOvikGlVJCSUcqR3MpLiks0V1tb61KF+mJ6znuapuShsLAQu93u5mjExaqqqsJkMjkfZnPLqxJs2bKFxMREZsyYgcFgICEhgddee61NxyoqKuK7777DYDAwbtw4QkNDmTBhAnv27Dnv+yorK1ssnDZ//nz0ej2jR49m7dq1bToPa2pqWrxxWFJSctFz3OUKQIgO5uHh4bzzlJOT065rNu443jSU2IBSKcPzxfndnNBYzfWDg7lujuTiSC/sxVEoFM6em8LCwlYVPHQnh8NBeno6NTU1zqXL2msqRtNyO2VlZa2eI2y3O/jTf47gcMCNw8MZExtMeIAnNwxrHJq9fk9mu8QmGjUVcrLb7fj7+xMeHu7ukLqEoKAgtFotFovFuUau6H7i4+Px9/d3Pp577rkW98vIyGDNmjXExcXx+eef88ADD7BgwQLefPPNVh8rIyMDgGXLljFv3jy2bt3KyJEjmTx5MmlpaS2+Jz09nZdffpkHHnjAZfvTTz/Nv//9b7744gtmzpzJ4sWLWbFiRatjGT9+vEvsCoUCu93Oiy++yKRJk1rdztmkxJkQnSAkJISKigrnsjuDBg265DnhDoeDHT+vDytViUVr3DAsjKe2HOVonom0wiriQn3dHVKrSS/spQkODiY/P5+GhgbKysq67E2ApkI+TfMg+/fvj4dH+w19v5jldjb9kMMP2RV4a1U8ccN/53LNvSqGLYfz+OhwHn+YNkgK67UDh8NBRkYGDQ0N6HS6iyri1VM13Yw6c+YMBQUFzmI+ons5duyYy/Jg5+qFtNvtJCYmOhPFhIQEjh49ypo1a5g9e3arjtXUU/rb3/6We+65x9nOjh072LBhQ7MEOi8vj2nTpjFjxgzmzp3r8tqTTz7p/HrEiBEALF++3GX7+bz44otMnDiR77//noaGBh599FGOHj1KWVkZ33zzTava+CW5ChCik0RHR6NWq6mtrXVWZbsUp4qqOVNWh1at5Mo4fTtEKHq6IG8tEweGAPDhoe7VGyu9sJdGqVQ6eyGbbgZ0RWfOnKG8vByFQkG/fv3w9vZu92M0fR+Ki4sv2CtdWWfh+c8aizktmBznMpf8sj4BXB4ThNXuYOO3We0eZ2+Uk5NDVVUVKpWK/v37SwGjX9Dr9c4q2+Xl5e4OR1wEX19f/Pz8nI9zJbFhYWHEx8e7bBs8eHCbips1FfJrTTt5eXlMmjSJsWPHtmrZ0zFjxmAymZzz1i8kPj6eH3/8kcsvv5xrr72WmpoabrnlFg4ePEi/fv1a+YlcSRIrRCfRaDTOtQ3z8/Oprq6+pPZ2/FyVeFy/YLy0MqhCtE7TkOIPD+Z1m+VBpBe2fYSEhKBSqaivr7+kZWY6Sl5ennOuakxMDH5+fh1ynMDAwFYvt/N/21MprWmgX4g39yTFNHt93lWNa4D/87vT1Ji79hJG9fX15OTkkJ6e3q7TWtpLaWmps25EdHR0u/bA9xRKpdI5NaA9boaLrispKYmTJ0+6bEtNTaVv376tbiM6Oprw8PALtpObm8vEiRMZOXIkycnJrfobe/DgQTw8PNpUtNdoNPLUU0/x8ccf8+mnn/LMM89cUsX8TrkSKCwsZNasWYSHh6NWq1GpVC4PIXqLwMBAZy9SVlbWJRVn2HG88e7XZBlKLNrgmsGh+OjU/7+9+46OqlobOPybnt57T0hIoYYmRaQpoCCo96ooilHAfrliu2IDUVGvDcu1A/aOKIqFJggC0ktIgfTee512vj+GzEdMIX1S9rNW1oIzZ87ZmeyZOe/Ze78v2WW1HMnoG3fyxShs11AoFLi7m0bie9tobEFBgfmiPCAgoFsT+cjlcvPr0FqyvfjcCj7enwbA6vlDUSubXjLNiPAg2M2Wijo93xzO7Jb2dobRaKSkpITExEROnz5Nfn4+ZWVlJCQkUFFRYenmmVVXV5sTOfn4+IhqFq3o7TejhK6xfPlyDhw4wJo1a0hKSuLzzz/nvffe45577jHvU1JSwvHjx4mLiwMgMTGR48ePmz/fZTIZDz30EK+//jrffvstSUlJPPHEEyQkJLB48WLAdPNw6tSp+Pv789JLL1FYWEheXl6j74gff/yR999/n9jYWJKTk/nggw947LHHuP3229uclGnDhg188803TbZ/8803fPTRRx16jXpk+CYmJoaMjAyeeOIJvL29xRx+YUDz9/ensrKS+vp6MjMz23VXrUFptZYj6aYAZJoIYoV2sFIpmD3Ui2+PZLHpWDZjg5pmIOwtdDodJSUlYhS2C3l4eJCfn091dTWVlZXY21t+XXRJSQmZmaYA0MfHxxxgdqfzy+3U1tY2Kd8iSaZkTkbJtJZ8UmjzSzbkchm3XRzME9/Hsv7PNG6eEISiFyTZq62tpaioiOLiYgwGg3m7o6MjBoOBqqoqzp49i5+fn8XLteh0OpKTk5EkCScnpz5Xy7inNdyMagg0RMDfP40dO5ZNmzaxYsUKVq9eTXBwMGvXrmXhwoXmfTZv3mxe6wqwYMECAFauXMmqVasAuO+++6irq2P58uWUlJQwYsQItm3bZp7Cu3XrVpKSkkhKSmpS/qZhuYVKpeKtt97i/vvvx2g0EhISwurVqxsF1Bfy/PPP88477zTZ7uHhwe23384tt9zS5mM16JEgdu/evezZs8e8EFgQBjKFQkFQUBBnzpyhqKgIJyendhWMBth9phCjBBFe9vg5t6/WoSBcHe3Lt0ey2HIyl1VXDml2hMlSjEYj5eXlFBcXU1FRYf4StbKyEqOwXUClUuHm5ma+227pILa8vNy8NsvDw6PHApiGcjulpaUUFBQ0uZn4/fFsDqWVYq1qnMypOf8c5cfLWxPJKKlhW1wes4daJghrGHUtKiqiurravF2tVuPm5oarqytqtRpJksjIyKCoqIisrCxqa2sJDAy0yABDQyZqnU6HlZVVkzqYQvM8PT0pKCjoVTejhK43d+5c5s6d2+LjMTExxMTEXPA4jzzySKM6se09xt9ryXZEeno6wcFNl2QEBga2a53v+XrkysXf37/Xp/QXhJ5kb29vvvudlpbW5lIPDbY3TCWOFKOwQvuND3HFw15Dea2OXYldW7u4o6qqqkhPT+fkyZOkpKRQXl6OJEnY2toSEBBARESEGIXtIg2fPRUVFdTU1FisHbW1taSkpCBJEi4uLvj7+/fo+Vsqt1NZp2PNz6ZkTvdOD8XHybrZ5zewViu46SJTEPzBnp4vt9MwFffEiROkp6dTXV2NTCbD2dmZsLAwhg0bhre3N2q1mhqtnqSCKgIDA82vd3FxMWfOnEGn0/V42zMyMqiurhaJnNpJqVTi5maaHSDWxgp9gYeHBydPnmyy/cSJEx2+Qd0jVwRr167lkUceIS0trSdOJwh9go+PD1ZWVuj1evNaoAspr9HxzE9x/Bprml45PcKy08CEvkkhlzF/pKn2oiWzFGu1WnJzc4mNjSUxMZGioiIMBgNqtRovLy+GDBlCRESEeQ2Y0DU0Go25kH1bM0t2tYYs7ZIk4ejoaJERuIZyO0ajkaKiIvP217afpbCynmA3W5ZMbjpy0JxFEwJRK+QcTi/lWA+sNTcYDBQUFBAXF0dCQgJFRUUYjUY0Gg1+fn4MHz6ckJCQRsmxJEli6ceHuezVP3j/jxQ8PDwICwtDoVBQVVVFQkJCj97UKCwsNL/uwcHBbV5bJ5h4enoik8morKxsNPIuCL3RggULWLZsGb///jsGgwGDwcDOnTv597//bZ4G3V49Mp34+uuvp6amhkGDBmFjY4NKpWr0eElJSU80QxB6FblcTnBwMAkJCZSVlVFcXNzi3Sit3sgnB9J5fcdZymtNd8vnDvcm2t+pB1ss9CfzR/ry/p5UtscXUFGnw8FKdeEndQGDwUBpaSnFxcWNMnTL5XJz4jMxNa77eXp6UlJSQklJCT4+Pj0aQBQWFpKamorRaMTW1paQkBCL5crw8PAgLS2NwsJCPD09OVtQxYZz5XJWXhmFRtm2myceDlbMG+nDt0ey+GBvKv+7sXsSU1VVVVFUVERpaak5MWDDqKubm1ur753NJ3L4M6kYgGd/jsfDQcP8kb5ERESYMxYnJiYSFBTUrYm1Gn6PhnXQvr6+7V5SI5imibu4uFBcXExeXl6Hy5QIQk945plnSE9PZ8aMGSiVpvDTaDSyaNEicy3c9uqRIHbt2rU9cRpB6HNsbGzw8fEhOzubzMxM7O3tUavV5sclSeK30/k8/0s8acWmO+SDPe149IpIpoaLqcRCxw3xcSDMw46zBVX8eiqP68Z231ROSZKorKykuLiYsrKyRlm57e3tcXV1xdnZWUwX7kE2NjY4OjpSXl5Ofn6+ufxXd9Lr9aSlpZmnitvY2BAaGmrRv7uzszNZWVnmupsrfziDwSgxM8qz3Z+xiy8O5tsjWfxyKpfMkhr8XbomX4Fer6e4uJiioqJGpXGsra1xc3PDxcXFfFHYkqp6PWt+jgcg1MOOpIIqHvzmBG52GiaFuhEREUFqairl5eWkpKTg7e2Nj49Pl7T/77RarXkaubOzM15eXt1ynoHAy8vL/LnaXIIyQegt1Go1X331FU8//TQnTpzA2tqaYcOGdSi5aYMeCWI7knFKEAYKT09PysvLqaqqIjU1lcGDByOTyTiZVcYzP8VzMM00U8HNTs39l4Vz3Rg/lApxsS90jkwm46poX178LZFNx7K7JYitra2luLiYkpKSRuvtGpI0ubi4NLppI/QsLy8vysvLKSoqwtvbu8ksqa5UUVFBWloaOp0OmUyGn58feXl5Fp8m3lBuJzc3l6/2xLI/pRKNUs4Tc6PafaxIbwcmh7mx52wRH+5L69AxzldRUUFRURFlZWXmvCJyuRwXFxfc3NywtbVt87Fe33GW/Ip6glxt+OlfF/PANyfYcjKXOz45wld3jGeIjyODBg0iOzub/Px8cnNzqa2tJTg4uEtvMhiNRnMiJ2tra5HIqZOsrKxwdnamtLSUs2fP4uTkhIODA/b29hZ/bwlCcwYPHszgwYO75Fg9EsSCaQrZ999/T3x8PDKZjKioKObNmyfeZMKAJ5PJCAoKIi4ujqqqKk6cTefDo6V8fzwHAI1SztLJIdw5dRB2mh57ywoDwPyRPrz4WyIHUovJLa/F27Hzd/H1ej0lJSUUFxc3Wl+nVCrN04Xbc/EtdB87OztsbW2prq6moKAAX1/fLj+HJEnmwAhMF90hISEXHDnsSe7u7qRmZPHW1tMYrTy5+9JhHR5FXXxxMHvOFvHVoUz+fWlYu6fpS5JEQUEBhYWF1NfXm7fb2Njg7u6Os7Nzu6+bkgoqWb/XlHBq5ZVDsFIpeOW6ERRX1XMgpYSYDYf47q6J+LvY4Ofnh7W1Nenp6eZ6sqGhoV12sykjI4OamhqUSiWDBg0Ssy+6gLe3N5WVleh0OgoLCyksLATA1tYWR0dHHBwcsLGxEeUthR53//338/TTT2Nra8v999/f6r6vvPJKu4/fI98iSUlJXHHFFWRnZxMeHo4kSZw5cwZ/f3+2bNki5vELA55Go8HZ3YtXNu3jh+P7kJx8kas0XBPty4Ozwi+YHVMQOsLP2YZxQS4cTCth8/Ec7pjS8c/iqqoqkpOTqampMY8ayWQyHB0dcXV1xdHRUVxE9UJeXl4kJydTWFiIl5dXl95YrqurIyUlhdraWsAULPr5+SGXyy2SCbclKpWK7+PKKKrW4u9Qzx1TQjp8rCmD3c3T9L86mMnSS9p3rMzMTHMQolAozKOuNjYdC6olSWLl5tPojRKXRnqa64prlAreWzSG697ZT0JeJbesP8i3d03ExVaNq6srVlZWJCcnU1tbS3x8PIMGDcLOzq5DbWhQUFBAcbFpTW5ISIhI5NRFGqZlVlZWUlFRQUVFBXV1dVRXV1NdXU1OTg4KhQJ7e3tzUCtmwAg94dixY+bP+qNHj7Z4DdDRa4MeCWKXLVvGoEGDOHDggDkjYnFxMTfddBPLli1jy5YtPdEMQeiV9AYjXx7KZO32M+RmlmA0GBlhV8d/l0xnuEjcJHSzq6J9OZhWwvedCGJzcnLIy8ujvLwcpVKJjY2NebpwbxpxE5pycnLCysqKuro6cyDbFQoLC8nKysJoNKJUKgkKCuq1yXuSCqr4Lr4SgNvGuKOUdbwkoEwmY8nkYP6z8RQb/kwlZlIQqjYu/8jOzjYHsP7+/ri5uXV6pPLnU3n8mVSMWiln5ZWNpzc7WKn48NZx/OPtfaQUVbP4o0N8vmQ81moFtra25oRPNTU1nDlzhoCAAHNZl/aqrKwkKysLAD8/P5G8rYvJ5XIcHR3N7zGtVmsOaCsqKjAYDJSVlVFWVgaYbpw7ODjg6OiInZ2dmBUpdIvff//d/O9du3Z1+fF7ZB7H7t27+e9//2sOYAFcXV15/vnn2b17d080QRB6HUmS+D2hgMtf28Pj38dSVKUlNCSYJ68cyjNXDsZVLlLmC93vimFeqBQy4nMrSMiraPfzDQaDeaqou7s7Q4YMITIyEg8PDxHA9hENgWtBQUGjpFsdodfrSU5OJiMjA6PRiIODA1FRUb02gJUkiad+PI1BYcWEwd6MDXJuVG6nI+aP9MXNTk1OeR2/nCuHdiH5+fnk5Zn2DQwMxMPDo9MBbI1WzzNb4gC4a8qgZqdIezla8dFtY3G0VnEso4x7Pz+K3mDqA2q1mvDwcJydnZEkifT0dDIzM80zLdrq/EROLi4u5jrFQvdRq9W4ubkREhLCiBEjiIiIwMfHBzs7O2QyGfX19RQWFpKUlMSJEydITEwkNze30UwaQegqer0epVJJbGxslx63R4JYjUZDZWVlk+1VVVViSoMwIMXnVnDzuoPc+uEhzhZU4WSjYuWVUWx7YDo3zBiNTCYjLy+vUQkSQegOTjZqpp3Lwvr9sZx2P7+oqAhJktBoNPj7+2NlZdXVTRS6WUOCLZ1OZ57u2REVFRXExcVRVlZmTt4UFhbWrQmjOuvX2Dz2nC1CrZTz5LXjAdMocmcu5K1UCm4eHwTAB3tSLnisoqIi8yilr69vh0c7/+7NnUnkltfh72LNXVNbnmUR6mHPulvGoFHK2ZFQwOPfxzZKJBUSEmLOVFxQUEBSUhJ6vb5NbWhI5KTX67GxselUJlKhY2QyGba2tnh7exMeHs6IESMYNGgQ7u7uaDQaJEmiqqqKnJwc4uPjOXnyJCkpKRQVFaHVai3dfKEfUCqVBAYGYjAYuvS4PRLEzp07l9tvv52//voLSZKQJIkDBw5w5513Mm/evG4//1tvvUVwcDBWVlaMHj2aPXv2tLr/7t27GT16tDkBxTvvvNPtbRQGhoKKOv7z7UmueH0Pe5OKUCvkLJ0czO4Hp3HrpGDUSjlOTk7mi5jU1NQuf9MLwt9dFW1K6LP5eDZGY9sv3iVJMo/C9taRNuHCZDKZeXQsPz+/3QGcJElkZWVx9uxZdDodVlZWRERE9PoRt1qtgad/Mo1U3nlJCMMH+aFUKtFqteZplx110/gANEo5J7PKOZha0uJ+ZWVlpKenA6ZM9V01nTulsIr396QA8ORcUzKn1owJcuH1G6KRyzi3vOVso8e9vb3NiZgqKipISEhoVO6nJenp6SKRUy+jUChwcnIiICCAoUOHMnToUAICAnByckKhUKDX6yktLSU9PZ1Tp05x+vRpcnNzxQit0CmPP/44K1asoKSk5c/D9uqRT5PXX3+dQYMGMWHCBKysrLCysmLSpEmEhoby2muvdeu5v/rqK+677z4ee+wxjh07xuTJk7n88svJyMhodv/U1FSuuOIKJk+ezLFjx3j00UdZtmwZGzdu7NZ2Cv1bjVbPa9vPMvWlXXx1OBNJgjnDvdl+/xQemxOFo03jkQo/Pz80Gg1ardZcEF4Qusv0CA/sNUpyyuvMJZ3aorS0FJ1Oh1KpFGvc+jg3NzeUSiX19fWUlpa2+Xl1dXUkJCQ0mlIeGRnZ4UREPel/vyeRU16Hr5M1d00NNZfbAdOIY2e42mm4ZpQfAB+cywz8dxUVFaSkmAJNNzc3/Pz8OnXOBpIkserHOHQGianh7lwa2bZ6t7OGeLF6/lAAXttxls//anyd5OTkREREBGq1mvr6ehISEigvL2/xePn5+ZSUlCCTyRg0aJCYeddLaTQa3N3dGTRoECNGjCA8PBxvb29zFvm6ujpz3gNB6KjXX3+dPXv24OPjQ3h4OKNGjWr00xE9smDJycmJH374gbNnz5KQkIAkSURFRREaGtrt537llVdYvHgxS5YsAWDt2rX89ttvvP322zz33HNN9n/nnXcICAhg7dq1AERGRnL48GFeeukl/vGPf3R7e4X+xWiU2Hg0i5e2JpJfYSqXEB3gxONzIhkd6NLi8xQKBUFBQSQmJlJcXIyTkxNOTk491GphoLFSKbhimDdfHc7kh+PZjA9xbdPzGgIXDw8P83RIoW+Sy+V4eHiYL1bPz2HRkqKiIjIzM83JmwIDA/vM51RqUTXv/WEKIJ+YG4W12jRS6e7ubl7KUVtbi7V1xzPDL744mC8OZrA9Pp/UomqC3f6/tFR1dTXJyclIkoSzszMBAQGd+4XOszUunz/OFKJWyFl15ZB2Zf68aXwg+RV1vLEzice/P4W7vYbLov5/RN3a2prIyEiSk5OpqqoiKSkJPz+/JqPuFRUV5s8Ef3//Tmc2FnqGTCbDzs4OOzs7fHx8MBgMFBYWkp2dTW5uLs7OzmLJiNAhV111FTKZrEtH9Hs060ZYWBhhYWE9dj6tVsuRI0d45JFHGm2fOXMm+/bta/Y5+/fvZ+bMmY22zZo1i3Xr1qHT6Xr12h6hd9mXVMQzW+KJyzUly/FztuY/syOYO9y7TRcVdnZ2eHl5kZeXR3p6Ora2tqL/Cd1mfrQPXx3O5KeTueZakq2prKykpqYGuVzeZWv4BMtqCOBqa2upqKjAwcGh2f30er25jiiAg4MDQUFBfebzqSGZk9Zg5JLB7swa8v8BmEqlwsnJidLSUgoKCjq1hjPUw47pER7sTChg/d5Unr7KNMpZW1vL2bNnzYmvgoODu6z8VK3WwOofTVOkb78khCC39tdkvv+yweRX1PH14Sz+9cVRPlsyntGBzubHlUolgwcPJiMjw7yet7a2loCAAORyOfX19Y1GmBtGt4W+R6FQ4OXlRVVVFeXl5aSnpxMeHt6l5yiv0eFgrRQl2PqpmpoaHnroIb7//nt0Oh0zZszgjTfe6JLrhm4LYru7wG1bFBUVYTAYmtwh9PT0bHFaRF5eXrP76/V6ioqK8Pb2bvKc+vr6RkXJG5JY6fX6XlELr6ENvaEtA8W3R7NZsek0APZWSu6aEsyiiwLQqBRtTogBpovKoqIi6urqSEpK6pHZCyD6zEA02s8BLwcNeRX1bD+d2+jCvjlZWVno9Xrc3d3Nd1ZFf+n7nJycKCgoIDMzk8GDBzd5vLKyktTUVPR6PTKZDB8fH/N3Znv+/pb8jNkRX8CuxEJUChmPXz64yWeys7MzhYWF5OfndzrL9q0TAtiZUMA3RzL517RgbBQSiYmJ5kRHAQEB7fpOuJA3dyaRXVaLt6MVSy8O6PDru2puBPkVdew+U8TiDw/x5dJxDHJvHBD7+PigVCrJzs4mPz+fyspKgoODSU5Opr6+HhsbG7y9vbvsbyy+lyzH29ubkpISysrKyMnJ6bIbE38mF7Pk46NcEubGmzeMaHM5qrbqTX2mK9/nfcnKlSv58MMPWbhwIdbW1nz++efcddddfPPNN50+drcFsecXuD127Fh3naZN/n53R5KkVu/4NLd/c9sbPPfcczz11FNNtu/YsaNXjVBs27bN0k0YEKp18MxxBSBjnLuR+YF12FXEs2NbfIeOV19fT1ZWFpIk4eHh0eLoSHcQfWZgibKTk1ch572txzCkt1xqpb6+3rxWOzAw0DwCJ/pL36fT6cjIyECSJGJjY81TByVJori42Dz6qlar8fT0JDc3t1Pn6+k+ozXAcydMn89TPA3EH9xNc5/MmZmZ1NfXExcXh7OzczN7tI0kga+NguwaI09+9BtRZKHT6dBoNPj4+JhHLLtCUR28e+67Z7ZnNbu2b+3U8eY4QZqdgvQqHTe+u5f7hhpwbGZZa21tLbm5uY3KMymVSvz8/Lr092sgPmcso6ysjKKiIuRyOf7+/p2eeaE3mt6LeqOMnYmFxPxvKzcOMtIdA7K9oc90tnRXX/Xdd9+xbt06FixYAMDChQuZNGkSBoOh0/WJuy2IPb/A7fn/7klubm4oFIomo64FBQUtZk1smL759/2VSiWurs2vE1uxYkWj0ebs7GyioqKYMWMGvr6+nfwtOk+n07Ft2zYuu+yyPjPdqy97/Ic4avRZRHja8dFd41F2wZ3F/Px8srOzkclkREVFodFouqClLRN9ZmAKyatk5//2E1+uYNK0GThaN/+3T09PJzAwEEdHRwYNGiT6Sz+Tnp5OcXGx+e9bV1dHamqqeSaSq6sr/v7+nco0a6k+8/rOJErqU/By0PDy4knYqJu/DCouLiY9PR2VSsXQoUM7NdVR75vDA9+cYG9SCQuvH4udjRXh4eFd/nvf/ulR9FIRkwa5suKmUV0yPfOS6VoWvH+QtOIaPs925vPFY7C3atru+vp6kpKSqK+vRyaTMXjwYHNioK4iPmcsS5JMswhqampwcHDo9Mywt3enUFSXhJO1isp6PQcL5YyOHMT9l3XdssPe1Geys7Mten5LyczMZPLkyeb/jxs3DqVSSU5ODv7+/p06do+sib3tttt47bXXmmSvrK6u5l//+hfr16/vlvOq1WpGjx7Ntm3buPrqq83bt23bxvz585t9zoQJE/jxxx8bbdu6dStjxoxp8Q2g0WgaBRUVFaY1kEql0uJvmvOpVKpe1Z7+6GRWGV8fMSWzePrqYVhbdU2w6efnR01NDZWVlWRlZREeHt4j60dEnxlYhvm7EOFlT0JeJdsSirhhXNNkMzqdjoqKCpRKZZO78aK/9A9+fn6Ul5dTXV1tnlZrNBqxsrLq8uRNPdlnMopreHdPGgCPz43C0bblpE0eHh7k5+ej1+uprq7u1Gjs3BG+rP58J4UV1RzMrOLeq0d1+Y3IHfH5/J5YhEoh46n5Q7ssE7CXk4qPb7uIa97eR0JeJfd+eZINt45Fo2w8gqJSqRg2bBj5+fnY2dl164wh8TljOaGhocTHx1NTU0NVVVWH3xfZZbW8tds0Sv/U/CHUag088t0p3v4jFR9nG26eENSFre4dfaYzyxL6MoPB0OTzSKlUdsn06h4psfPRRx9RW1vbZHttbS0ff/xxt577/vvv54MPPmD9+vXEx8ezfPlyMjIyuPPOOwHTKOqiRYvM+995552kp6dz//33Ex8fz/r161m3bh0PPvhgt7ZT6PuMRoknfjiNJMHV0b6MDbpwds/2CAoKQqFQUF1dbc4KKwhdbf5I0+yR7481f9e4sLAQSZKwtbXt8pEWoXewsrIyB6oN00Tt7e2JiorqM9mHm7P6pzi0eiMTB7kyZ1jT/BbnO7/cTmFhYYfPKUkSmempzIlwQSaT82sGXV5qpk5n4KlzyZxuuziYUI+uzQQc4GrDh7eOxVatYF9yMQ9+c7LZetIKhQIfH58eXfIi9Cxra2vzjIyMjIwOByLPbomjTmdkXLAL80b4sGBcAMsvNa3Bf3LzaX6N7dwyhf4iOzubm266CVdXV2xsbBg5ciRHjhwxP/7dd98xa9Ys3NzckMlkHD9+vNnj7N+/n+nTp2Nra4uTkxNTp05tFJeVlpZy88034+joiKOjIzfffHOTWtkZGRlceeWV2Nra4ubmxrJly9BqtRf8HSRJIiYmhmuuucb8U1dXx5133tloW0d0axBbUVFBeXk5kiRRWVlJRUWF+ae0tJSff/4ZD4+21S/rqOuvv561a9eyevVqRo4cyR9//MHPP/9szjiYm5vbqGZscHAwP//8M7t27WLkyJE8/fTTvP7666K8jnBB3xzJ5ERmGXYaJSsuj+jy46vVavPUi5ycHGpqarr8HIIwf6QPAH+llpBd1vjmo9FoNF/Qt7QkQ+gfvLy8AFMuCF9fXwYPHmzxkYzO+D2hgO3x+SjlMp6a17ayM+7u7shkMiorK5u9EX8hkiSRmppKRUUFlw/zxsHTj7MlWv5MKu7Ir9Ci9/5IIaOkBk8HDcumd08FiKG+jrxz82iUchk/nshhzc8dy/Eg9H1eXl5YWVmh1+s7VFpt79kifj6Vh0IuY/X8/38vLpsRyg3jApAkWPblcQ6mtr1meX9UWlrKpEmTUKlU/PLLL8TFxfHyyy83upFYXV3NpEmTeP7551s8zv79+5k9ezYzZ87k4MGDHDp0iHvvvbfRcpAbb7yR48eP8+uvv/Lrr79y/Phxbr75ZvPjBoOBOXPmUF1dzd69e/nyyy/ZuHEjDzzwwAV/j1tuuQUPDw9zgOzo6MhNN92Ej49Po20d0a1j205OTshkMvP6iL+TyWTNJkTqanfffTd33313s499+OGHTbZNmTKFo0ePdnOrhP6krEbLC78mAnDfpWF4OHRPHTVXV1fKysooKysjNTWVqKgokZZe6FI+TtaMD3HhQEoJm4/ncNfUQebHiouL0ev1aDSaPj0iJ1yYra0tkZGRKBSKbl+D393qdAZW/WjKFn/rpCDCPO0v8AyTzpbbyczMpLS0FJlMxsihESwosuXDfWm8vyeFi8O6JuljZkkN//s9CYDH5kRhq+m+y7rJYe68eO1wln91gg/2puLlaMWSySHddj6hd5LJZAQFBZGQkEBxcTEuLi5tHn3X6o08uTkWgEUTAonw+v/nyWQynp4/hMLKerbH57Pko0N8e9dEBrfx/drfvPDCC/j7+7NhwwbztqCgoEb7NASaaWlpLR5n+fLlLFu2rFG50fPLncbHx/Prr79y4MABLrroIgDef/99JkyYQGJiIuHh4WzdupW4uDgyMzPx8THd6H755ZeJiYnh2WefbfXvf377u1q3jsT+/vvv7NixA0mS+Pbbb9m5c6f5Z+/evWRkZPDYY491ZxMEoUe8vPUMJdVaBnvaccvEoG49V2BgIAqFgrq6Oqqrq7v1XMLAdNW5KcWbjmWZs7NLkmSexu7h4SFungwANjY2fT6ABfhgTwrpxTV42Gv496VNb6i3pmG2WElJSbumTmZnZ5tnLQQHB+Pg4MCtk4KQyWD3mULO5Fe2qx0teWZLHPV6IxNCXLlyeOtTpLvC1dF+PHJuptEzW+L54fjATFYz0Nna2prfGxkZGY0yU7dm/Z+ppBRW42an5r5m3otKhZw3bohmVIATFXV6bll/kNzy9s+C6A82b97MmDFjuPbaa/Hw8CA6Opr333+/XccoKCjgr7/+wsPDg4kTJ+Lp6cmUKVPYu3eveZ/9+/fj6OhoDmABxo8fj6OjI/v27TPvM3ToUHMACzBr1izq6+sbTW/uad0axE6ZMoWpU6eSmprKVVddxZQpU8w/EyZMaPRiCEJfFZtdzmd/pQPw1LyhXV7n7O+USqX5rldDEjFB6EqXD/NGrZBzJr+K+FzTxXZ5eTn19fUoFIpeVTpMEFqTVVrDm+aRykjs2jlSaWdnh42NDUajsc0lMvLz881VDgIDA83JbwJdbZkVZZqmvW5Parva0ZzdZwr57XQ+CrmMp+a3bYp0V7jjkhBizt2sffCbE/yZNDBLhwx0Pj4+qNVq6uvrycnJueD+eeV1vL7jLACPXB7ZYvZ7a7WCdbeMZZC7LbnldcSsP0R5reXrvHaVvy+vrK+vb3a/lJQU3n77bcLCwvjtt9+48847WbZsWbtyCTWUuFq1ahVLly7l119/ZdSoUcyYMYOzZ01/i7y8vGaXdnp4eJg/x/Ly8posIXJ2dkatVjep6NKTuu1q++TJk+Y7M+Xl5Zw6dYqTJ082+yMIfZXRKLFy82mMElw5wocJg5ovw9TVRBArdCdHaxXTI0xfag0jLQ2jsO7u7p0qrSIIPemZn+IbJZDpiIYLvIakZq0pKioyrxP09fVtcsNnyeRgADYdz6awsvmL17ao1xtYtdk0RTpmYlCPTrmUyWQ8OTeKOcO80Rkk7vjkCKdzynvs/ELvoFAoCAgwZbDPz8+/4MywZ3+Op0ZrYHSgM9dEt15+0tlWzUe3jcPDXkNifiVLPz5Mnc7QZW23pKioqEZrQZ977rlm9zMajYwaNYo1a9YQHR3NHXfcwdKlS3n77bfbfK6GOOyOO+7g1ltvJTo6mldffZXw8PBGlWGauwEmSVKj7W3Zp6d125XIyJEjzXctR44cSXR0NCNHjmzyEx0d3V1NEIRu992xbI6kl2KjVvDoFV2fzKklDUFsdXU1BkP/+GAXeperzl1k/HA8h4rKKqqqqpDJZN2ejE8QusofZwr59XTTBDLt5ezsjFKpRKvVUl7ecrBWVlZGerppVo6np6c5Odb5Rgc6M9LfCa3eyCcH0jvUHoB1e1NJLarG3V7DfZd2TzKn1sjlMl6+bgQXBbtQVa8nZsMhMktEssGBxtHRERcXUyWG9PT0Fm/y7Esu4scTOchl8NS8IcjlF34v+jnb8OGt47DXKDmYWsL9Xx/H0ExW7L4mLi6O8vJy88+KFSua3c/b25uoqKhG2yIjIxslo72QhkzSrR3Hy8ur2YoXhYWF5tFXLy+vJiOupaWl6HQ6iyZ57LYgNjU11ZyePjU1lZSUFFJTU5v8NAx1C0JfU1Gn4/lfTBkal80Iw9ux5ZqDXU2tVmNlZUoeJUZjhe4wLcIdBysleRV1/HY4AQAXF5c+naFWGDi0eqM5mdPfE8i01/nldgoKCprdp7Ky0nw94+bmhp+fX7P7yWQy82jspwfSOzS6lFNWyxs7TFOkH70iAnsry7wnrVQK3ls0hggvewor67llw0FKqy9cckPoX/z9/VEqldTW1jYbDOkMRvOsgYUXBTLUt+2ZaKN8HHj35tGoFDJ+PpXH0z/FXXA2RG9nb2+Pg4OD+aelvAOTJk0iMTGx0bYzZ860K8FcUFAQPj4+rR5nwoQJlJeXc/DgQfPjf/31F+Xl5UycONG8T2xsLLm5/1/6aOvWrWg0GkaPHt3m9nS1bgtiAwMDzXc9AwMDW/0RuldVvZ7K/rOcoNd4ddsZiqq0hLjbctuk4B4/v5hSLHQnjVLBnOHeSHodPx40rZ0RZXWErmSUQG8wdsvPB3tTWk0g016tlduprq4mKSkJSZJwdnY2T7FsyewhXvg6WVNSreW7o+1PjPTslnhqdQbGBjmbk7BZiqO1ig9vHYePoxUphdXc9tEharVidtBAolQqG5X/q6ura/T4R/vSOJNfhYutmgdmtv+9ODHUjZevGwnAh/vSeGf3wBj8Wr58OQcOHGDNmjUkJSXx+eef895773HPPfeY9ykpKeH48ePExZnqRCcmJnL8+HHzqKlMJuOhhx7i9ddf59tvvyUpKYknnniChIQEFi9eDJhGZWfPns3SpUs5cOAABw4cYOnSpcydO5fw8HAAZs6cSVRUFDfffDPHjh1jx44dPPjggyxdutSidaG7tcROg48++gg3NzfmzJkDwMMPP8x7771HVFQUX3zxhQhku9H7f6Tw398SmOgh53pLN6YfScir4OP9DcmchqBW9vwaQQcHBwoKCkQQK3Sbq0b68sn2o+xLquLhK22xtu652QZC//benlReOqBg+YHt3Xqe1hLItEdL5Xbq6upISkrCaDTi4OBAcHDwBactKxVybp0UxDNb4lm3N4UFY/3bNL0S4M+kIracyj03LXNor8gS7uVoxUe3jeOf7+znWEYZD288yRs3iKViA4mLiwslJSWUl5eTnp5uDn4KKupYu910E/ThWeE42ag7dPx5I3woqKjjmS3xvPBrAp4OGq4Z1fxsh/5i7NixbNq0iRUrVrB69WqCg4NZu3YtCxcuNO+zefNmbr31VvP/FyxYAMDKlStZtWoVAPfddx91dXUsX76ckpISRowYwbZt2xg06P/L53322WcsW7aMmTNnAjBv3jzefPNN8+MKhYItW7Zw9913M2nSJKytrbnxxht56aWXuvMluKAeufJes2aN+eJn//79vPnmm/z3v//Fzc2N5cuX90QTBix/Fxt0BonTJbI+PwWjt5AkiSd/OI3BKHH5UC8mh7lbpB329vbIZDK0Wm2L2e0EoTNG+TviqqijWmcgoVwkcxK6RkWdjrd2pyDRvQHY5DC3CyaQaY+/l9vRarWcOXMGvV6Pra0tgwYNanNQef1Yf+w1SpILq9l1pvkpyn+n1RtZublhinQQUT6WGwH5uzBPez64ZQwKuYwfT+Twx5lCSzdJ6GEBAQHI5XKqqqrM5aWe/yWBqno9I/yduG6Mf6eOv2RyCEvPTcV/+NuT7B4AfWzu3LmcOnWKuro64uPjWbp0aaPHY2JikCSpyU9DANvgkUceITMzk+rqavbt28fFF1/c6HEXFxc+/fRTc8bkTz/9tEkt+ICAAH766SdqamooLi7mjTfesHgJth4Zic3MzCQ0NBSA77//nn/+85/cfvvtTJo0ialTp/ZEEwasi8PcUClkFNVDSlENET4duwsm/L/NJ3I4mFqClUrO43OjLvyEbiKXy7Gzs6OyspLy8nKRcOecmpoaNBoNCoXC0k3p84qLi7hksDsbTxTw29kK/jnB0i0S+oOvD2VSXW/A01rix/umoe6mddaO1qouHalsKLdTU1NDXl4eZWVl6HQ6rK2tCQ0NbVfWbnsrFQvG+fP+nlQ+2JPK9IgLT9X/cF8qSQVVuNqqWX5Z56dId7WxQS7cMiGI9X+msmrzaX65bzIapfgcHijUajW+vr5kZmaSnZ1NUpmR745lI5PB6jYmc7qQFZdHUlBZzw/Hc7jr0yN8dfsEhvm1fY2t0L/0yK11Ozs7iouLAdNC4EsvvRQAKyurJmtLhK5lp1FyUbApc9zvif3/rlV3q6zT8ewWUzKne6eF4utk2emVYl1sY3l5ecTHx3PixAmSkpIoLCxEpxMLwjtCkiQKCgqYFu6OwtaJXYkFlNWIpC1C5+gNRjb8mQbANG8jzjZqnLrppzum2jbcLMzPz6e+vh61Wk1YWBhKZfvHBGImBaOQy9iXXHzBEjX5FXW8dm5a5n8uj+iSKdLd4b7LwnCz05BSVM26vZ2vhSv0Le7u7tja2lKv1fGfj3YCsGCsPyP8nbrk+HK5jBf/OYJJoa7UaA3c+uFB0otbL+0j9F89EsRedtllLFmyhCVLlnDmzBnz2tjTp08TFBTUE00Y0KaHm6a77hRBbKe9vuMsBZX1BLnasPSSEEs3xxzEVlZWiuniYJ7CJEkS5eXlZGRkcPLkSRISEsjLyxM3zdqhpKQEnU5HqJcTQ4J90RkktpzKvfATBaEVv8TmkV1Wi4utijHufe8zq6HcDpjWyQ4ePLjDGbt9nay5YpipBMa6Pa0HfGt+jqdaayA6wIl/9uK1gA5WKnO5uTd2JJFbLj5zBxKZTEZgYCC/xOZxNqsAO1kdD83q2vKDaqWcd24aTZS3A0VVWm5Zf5CiKrGkaiDqkSD2f//7HxMmTKCwsJCNGzfi6uoKwJEjR7jhhht6ogkD2rRzQezRjDIxktIJZ/MrzSMIK+cN6RXTpGxsbFAqlRiNxgsWGu/vKisr0Wq1KBQKIiMj8fX1xdbWFjBlD83OziYuLo7Y2FiysrKoqqoSgX8rGkoleHh4cM0o07rC74+1P5OqIDSQJIkP9pgyi940LgBVH1xmLZfL8fPzw87OjrCwsE6vCWtY47f5RA555XXN7nMgpZgfjuecm5Y5tEumZXanq6N9GRPoTK3OwDPnZi4JA0e1Qc6XpysBuCHKBgdN17/R7a1UfHjrWPycrUkrrmHxh4eortd3+XmE3q1HvkKcnJx48803+eGHH5g9e7Z5+1NPPcVjjz3WE00Y0PycrfG2ljAYpQGxEL47SJLEys2n0RslLo30ZFp471l/KqYUmzQsWXB2dsbGxgYvLy8iIiIYPnw4gYGBODo6IpPJqK+vJz8/n8TERE6ePElaWhplZWUYjUYL/wa9R0VFBbW1teb6mPNG+CKTwaG0UjJLaizdPKGPOpxeyomsctRKOTeO672jiRfi6upKeHh4l2TrHu7nxLggF/RGiQ/3pTV5XGcwsvIHUzKnG8cF9In1fzKZjNXzhyKXwZaTufyZVGTpJgk96IVfEqhVOjDYx5nLItzJysrqlvN4OJiyYjvbqDiRVc49nx9FZxDf4wNJj90HLSsr4+WXX2bJkiUsXbqUV155hfLy1teACF1niLNpxGlHfNuyIAqNbTmVy77kYjRKOSuvtFwyp+Y0BLED+f1kNBopLS0FMM/0aKBSqXBzcyM0NJSRI0cSEhKCi4sLCoUCvV5PcXExycnJnDhxguTkZIqKitDrB/Yd3YZRWDc3NxQKBV6OVkwIMb2um0/kWLJpQh/2/h+mUdh/jPLF1c6yWS17kyXnRmM//yu9yWjSJ/vTScyvxNlGxUOzwi3RvA6J8nHg5vGmMkQrN58WwcUAcSS9lG+OZCGTyXj25uko5DKKi4u77Sb7IHc71sWMxUolZ1diISu+OyVmWA0gPRLEHj58mEGDBvHqq69SUlJCUVERr776KoMGDeLo0aM90YQBb4iz6QtkV2IBevFl0i7V9XpzMqe7pg7C38XGwi1qrCGIrampGbDBV2lpKUajEY1Gg52dXYv7yeVynJ2dCQ4OZsSIEQwePBgPDw/UajVGo5GysjLS09M5ceIEiYmJ5OfnNync3t/V1taaLzjOz3h91blSJZuOZYuLBKHd0oqq2RZvujmy+OJgC7emd5kR6UmQqw0VdXq+OZxp3l5QWcer284A8PDsiA7X2LSU+y8Lx9VWTVJBFR+eW4oj9F8Go8TKzbEAXDvaj4sj/czfIRkZGd0222lUgDNv3jAKuQy+PZLFy1vPdMt5hN6nR4LY5cuXM2/ePNLS0vjuu+/YtGkTqampzJ07l/vuu68nmjDgBdmDs42Kijo9R9JLLd2cPuXN35PILa/D38WaO6cMuvATephKpTJPa6usrLRwayyjpKQEaDoK2xqZTIa9vT3+/v4MGzaMqKgofHx8sLEx3aSoqqoiKyuL06dPc/r0abKzswfEuuOGUVhnZ+dG6/1mD/VCrZSTVFDF6ZyBPXVdaL/1f6YiSaYcDaEe9pZuTq+ikMvMgf36P9MwGE03iZ7/JYHKej3D/Rw7XWPTEhxtVPxntimpz9rtZ8ivGFg3BAeaLw5mEJtdgb2Vkv9cbvq7+/j4oFarqa+vJyen+2bxXBrlyZqrhwGma7ZPDqR327mE3qPHRmL/85//NEpBr1Qqefjhhzl8+HBPNGHAk8tgSpgbADsSxJTitkourDInInly7hCsVJZP5tScgbwuVqvVmn9vFxeXDh/H2toab29vIiMjGTZsGP7+/jg4OCCTyairqyMvL4+EhAROnTpFQUFBv1xDq9PpzDcEPD0b1610sFJxWaRpm0jwJLRHWY2Wbw6b1sUtnWz5rO690T9G++ForSKjpIZtcXkcTivhu6PnamzOH4qilydzask/R/sx0t+Jaq2B534WSZ76q5JqLS/+lgjAA5cNxu3ccgGFQkFAQABgukHanTeCF4wL4L5LwwB48odYfo3N67ZzCb1DjwSxDg4OZGRkNNmemZmJvb24I9tTGrIU7zg3pUtonSRJrNp8Gp1BYlq4O5dG9p5kTn83kNfFNgRddnZ2nc4U2kCtVuPh4UFYWBgjRowgODgYZ2dnFAoFWq2WzMxMTp48SU5OTr+awl1QUIAkSdjZ2ZkzO5+vYUrx5hM55tEiQbiQz/7KoFZnINLbgQmD2j5bYiCxUSu5abzpYv+9P1J48lwyp+vH+DOyi2psWoJcLmP1/CHIZPD98Rz+Sim2dJOEbvDibwmU1+qI8LLnpnNroRs4OjqabzCnp6d363KUf88I44Zx/kgSLPvyGIfTS9FqRVWO/qpHgtjrr7+exYsX89VXX5GZmUlWVhZffvklS5YsESV2etDkMFeUchnJhdWkFfX/aZGd9dvpfPacLUKtkLPyyiHIZL33TridnR1yuRydTjfg1nA2ZCVuz1Ti9lAoFLi4uBASEsLw4cMJCAhAo9FgMBjIzc3l5MmTZGRkUF/ft+vUGY1Gc53dv4/CNpgy2B0nGxUFlfXsTxYXo8KFafVGPjqXdXfp5OBe/TlqaYsmBKFSyDiaUUZcbgUOVso+lcypJcP9nLhhnClAX7n5tMjL0c+cyCzjy0Omtdyr5w9FqWgaWvj7+6NUKqmtrTUvWekOMpmMp+cPZeogR2pKC7jllU0cO5OBTqfrtnMKltMjQexLL73ENddcw6JFiwgKCiIwMJCYmBj++c9/8sILL/REEwRMdbXGBZvuhokpxa2r1Rp4+qc4AG6/JIQgt6ajUr2JXC43JzQaSFOKq6urqaurMyds6m4NJWeGDBlCSEgItra2SJJEYWEhsbGxJCcn99l1s0VFRRgMBjQaDY6OzZfxUCvlzBnmDcD3x8WUYuHCfjyRQ0FlPZ4OGuYO97F0c3o1Twcr5o3wNf//oVnh/SaL80Mzw3GyUZGQV8nH+8V6xf7CaJR4cvNpJMlUH7jhGvPvlEol/v6mdd05OTndcrO9rq6OnJwcEhPiWTpMTZi9nsqaOr5NU5KSV9Ll5xMsr0eCWLVazWuvvUZpaSnHjx/n2LFjlJSU8Oqrr3bZ9D+hbaZHmKbE7kwQU4pb89auJLLLavF1suaeaaGWbk6bDMR1sQ2jsE5OTigUPbdeWSaT4ezsTEREBOHh4eagr6ysjISEBBITE/vU1G5JkigoMN3Y8vT0bHW0rGFK8a+xedRqDT3SPqFvkiSJD/amAnDLxCDUyh6r6tdn3TElBCuVnOgAJ268KPDCT+gjnG3V5lHlV7edobCyb89cEUy+PpzJicwy7DRKVpxL5tQSFxcXHBwckCSJ9PSuuZFRX19Pbm4ucXFxnD59mtzcXOrq6rBWK3l54URCQ4LQuQaTUSlmgPRH3fqNUlNTwz333IOvry8eHh4sWbIEb29vhg8fbs4AKvSsS88lZvkrpYTKOjG9ojlpRdW8u9uUzOnxOZFYq3tnMqe/awhiKysr+2XSob+TJKlDWYm7mp2dHaGhoQwZMgRXV1dkMhlVVVUkJSVx+vRpioqKen1JmrKyMurr61EqlRd8LUcHOOPnbE1VvZ7tYn290Ip9ycXE51ZgrVJw47nppELrBnva8+d/pvPF0vF9NplTSxaMDWCYryOV9Xqe/yXB0s0ROqmsRssLv5r+jvddGoaHg9UFnxMYGIhcLqeqqsq8fKW96uvrycvLIz4+ntjYWHJycqitrUUmk+Ho6EhQUBAjRoxg1LBIPr5zGndGwmVRvTenidBx3RrErly5kg8//JA5c+awYMECtm3bxl133dWdpzRLS0tj8eLFBAcHY21tzaBBg1i5cuUFF3jHxMQgk8ka/YwfP75H2twTgtxsCXG3RW+U+ONMkaWb0yut/ikOrcHI5DA3Zg/1snRz2sza2hqVSoXRaOyzU1rbo6ysDIPBgEql6hUJ4qysrAgKCmLYsGF4eXmhUCioq6sjPT2dU6dOkZeXh8HQO0cuG9Youbu7I5e3/rUgl8u4aqRpNPYHMaVYaEVDZvfrxvj1uRqnluRqp+m1mfA7Q3EuyRPAxqNZHEkXUzz7spe3nqG0RsdgTztumRjUpueo1Wp8fU3fH9nZ2W1eq6rVasnPzychIYHY2Fiys7OpqalBJpPh4OBAYGAgI0aMIDQ0FFdXV/PMLD9nayKcevdNZKHjlBfepeO+++471q1bx4IFCwC46aabmDRpEgaDodun/iUkJGA0Gnn33XcJDQ0lNjaWpUuXUl1dzUsvvdTqc2fPns2GDRvM/1er+9eX74wID1IKU9mRkM+c4d6Wbk6vsj0un50JBagUMlbN693JnJrj4OBAcXExFRUVvSKw607nJ3TqTX8nlUqFr68vXl5eFBUVkZ+fj06nIzs7m7y8PNzc3PDw8Og1nytVVVVUV1cjk8lwd3dv03Ouivbhzd+T2JVYSEm1Fnt173n9hd4hqaCS3xMLkcng1knBlm6O0EtEBzhz/Rh/vjqcyRPfn+bHf13c70acB4LY7HI++8s0JXjVvCGomknm1BJ3d3dKSkqorq4mIyODQYMGNbufTqejtLTUvO/57O3tcXFxwcnJqVH5TmFg6da/fGZmJpMnTzb/f9y4cSiVSnJycswLvLvL7NmzmT17tvn/ISEhJCYm8vbbb18wiNVoNHh59Z0RuPaaEenJ+3tS2ZVYiMEoiS+Qc+p0Bp76yVTW4LaLgxnkbmfhFrXf+UFsw93O/kiv15vX/lpyKnFrFAoFnp6eeHh4UFJSQn5+vjkzY0FBAS4uLnh6emJtbW3RdjaMwrq6uqJSqdr0nFAPe4b6OhCbXcGWU7ksGC0S9giNrTu3FnZmlGevT4wn9KyHZ4fzS2wucbkVfP5XOjdPCLJ0k4R2MBolnvwhFqMEc4d7M3GQW7ueL5PJCAwMJD4+nrKyMkpLS82JGXU6HWVlZZSUlFBVVdXoeXZ2dubAta3fVUL/1q3TiQ0GQ5PRBqVSabG6iuXl5eZaVa3ZtWsXHh4eDB48mKVLl5oTnvQXowOdcbBSUlKt5XhmqaWb02u8uzuFzJJavBysWDY9zNLN6ZCGdbE1NTX9OqV8SUkJkiRha2uLldWF1+FYkkwmw9XVlaioKEJDQ7G3t0eSJIqLi4mLiyMpKYnKykqLtK2+vp6ysjKg5bI6LWmYUvz9MTGlWGisqKqejUdN/WLJ5BALt0bobVztNDx4LsnTi78lUlwlkjz1Jd8dy+ZoRhk2agWPzYns0DGsra3Ng0UZGRkUFhZy5swZc8m6hgDW1tYWf39/hg8fTnh4OO7u7iKAFcy6dSRWkiRiYmIaZSCuq6vjzjvvxNb2/+/Mfvfdd93ZDACSk5N54403ePnll1vd7/LLL+faa68lMDCQ1NRUnnjiCaZPn86RI0dazKRcX1/fqEZkwwWpXq/vFYFEQxvOb8vkMDe2nMpj2+k8hvv072mnbZFZWsNbu5IAeGT2YNRyqVf87TpCpVJRW1tLSUlJm27aNKe5PtOb5OXlodfrcXBw6LVtbI6NjQ3BwcFUV1eTn59PWVkZxcXFFBcXm7/UnZycemx6dFZWlvl1VCgU7XotLx/iwZqf4zmSXkpKgWlUvC/9LYTu8/GfqWj1Rob7OTDCx67ZftHbP2OE7nXdKB+++CuD+LxKnv8lnjVXDbngc0SfsbyKWh3P/RwPwD1TQ3CzUXb47+Hm5kZBQQF1dXWkpKSYt9vY2ODs7Iyzs3OjgbCOnKc39ZmODOBlZ2fzn//8h19++YXa2loGDx7MunXrGD16NGCKn959912OHDlCcXExx44dY+TIkY2OMXXqVHbv3t1o2/XXX8+XX34JmAbupk2b1uz5Dx48yNixYwGavS55++23ufPOO9v9e3UVmdSNaTNvvfXWNu13/vrTC1m1ahVPPfVUq/scOnSIMWPGmP+fk5PDlClTmDJlCh988EGbzwWQm5tLYGAgX375Jddcc0272vTBBx/g5ta+aRY95XChjE+SFHjbSDwyoncmm+lJHyTIOVUqJ8zByD1RRnrREst2Ky4uprS0FHt7+3aPrvUF9fX1ZGZmIpPJCAoK6tHSOl2tYerU+RmlVSoVzs7O2Nvbd2swazAYSE9Px2g04uvr26FpzW/FyUksl3OFv4FZfiJ5hgBaAzx1VEGVXsYtYQZGuYl+ITQvpQJeO20aS7l/qJ5AcT+919uYKuePPDkeVhL/GWGgs1Wz6urqyM3NRalUYmdnh52dXb8daS0qKmLJkiVkZmbi5+d3wf1LS0uJjo5m2rRp3HXXXXh4eJCcnExQUJB5HfEnn3xCamoqPj4+LF26tMUgdvDgwaxevdq8zdra2lwaUKvVmis9NHjiiSfYvn07KSkp5usQmUzGhg0bGi3VdHR0tOiSqG4diW1PcNpW9957rzlRVEuCgoLM/87JyWHatGlMmDCB9957r93n8/b2JjAwkLNnz7a4z4oVK7j//vvN/8/OziYqKooZM2b0inWJOp2Obdu2cdlll5k/HCbW6Pjs+d/JrZExYuI0fJ0suy7PknafKeTU/mMo5TJeW3QxYZ59by3s+SorKzl79ixKpZLhw4d36BjN9ZneIisri8DAQBwdHVtMCNHX6PV6CgoKKCwsNGcwViqVeHp6tiljcEfk5uaag9fIyI5NCavzzuY/350mvsaemVIFM2f2vv4i9KyvD2dRpY/Dx9GKRxZejLKFhC+9+TNG6DkZG0+x6Xgu20pd+Obai1rN0SH6jGUl5FWy98B+AF64fgwXh/bOfBTn6019Jju7fUtvXnjhBfz9/RvFUufHNwA333wzYKrI0hobG5sWc/2o1epGj+l0OjZv3sy9997b5Ea6k5NTr8oZ1OdSerm5ubV5dDM7O5tp06YxevRoNmzY0KELweLiYjIzM/H2bjmLr0ajaTTVuCHhjFKptPib5nwqlcrcHndHFWMCXTiYVsIfSSUsGqCJFer1Bp75ORGAmIlBRPk5W7hFndcwBcdoNKLX6zt1l+z8PtMbSJJEZWUlSqUSLy+vXtW2zlCpVAQGBuLv709RURF5eXnodDry8/MpLi7G3d0dDw+PLsvCaDQaKSsrQ6lU4ufn1+HX8Yrhvqz8MZ7U4hoyfXpffxF6ltEosWF/BmBKjmdt1fwSnPOJPjOwrZgTxfb4Qk5lV/Dd8TxuvOjC9YRFn+l5kiTx9JZEjBJcPtSLaZG9J5Bpi97QZ9r7/b1582ZmzZrFtddey+7du/H19eXuu+9m6dKl7T73Z599xqeffoqnpyeXX345K1eubLGCxebNmykqKiImJqbJY/feey9LliwhODiYxYsXc/vtt3fLTfa2styZu1lOTg5Tp07F39+fl156icLCQvLy8sjLy2u0X0REBJs2bQJMpSYefPBB9u/fT1paGrt27eLKK6/Ezc2Nq6++2hK/RreaEWkq/rwjvn8lrmqPD/akklZcg7u9hn9f2jeTOf2dTCYzfzg13FDpLyoqKtDpdCiVSvNUmP5ELpfj4eHBsGHDCAwMRKPRoNfryc3N5dSpU2RlZXXJ2p6SkhJ0Oh1qtdqcFbIj7K1UXBZlupg5XNRvv06ENtp9tpCkgirsNEquH9u9FQiE/sHD3or7LhsMwH9/S6C0WmvhFgnN+eF4DgfTSrBSyXl8bpSlm9OnVVZWUlFRYf45P6fO+VJSUnj77bcJCwvjt99+484772TZsmV8/PHH7TrfwoUL+eKLL9i1axdPPPEEGzdubHF5JMC6deuYNWtWkyoyTz/9NN988w3bt29nwYIFPPDAA6xZs6ZdbelqfW4ktq22bt1KUlISSUlJTeaen78MODExkfLycsBUEuPUqVN8/PHHlJWV4e3tzbRp0/jqq6/6Zc3NGZEePPdLAvuTi6mu12Or6bfdoVnZZbW8sdM0TfzRKyKwt+o/d3YdHBwoLy+noqKiX62LbagN6+Li0qtqw3Y1mUyGm5sbrq6ulJWVkZeXR01Njbk8j6urK15eXi0mm7uQhrI6Hh4enX4drxrpw48ncjhaJENvMCIGSAauD/aYkrMsGOvfrz5Phe51y4RAvj6USWJ+JS9tTeTZq4dZuknCeSrrdDx7LpnTvdNCB/Tys64QFdX4JsDKlStZtWpVk/2MRiNjxowxB4rR0dGcPn2at99+m0WLFrX5fOeP3A4dOpSwsDDGjBnD0aNHGTVqVKN9s7Ky+O233/j666+bHOfxxx83/7th3e3q1asbbe9p/fbWeUxMDJIkNftzvoYMymBa6Pzbb79RUFCAVqslPT2dDz/8sNtr2lrKIHc7Alxs0BqM7E0qsnRzelRhZT3/+fYkdTojY4OczeVC+ouGUjvnJwzq6wwGg7kcTG+tDdvVZDIZzs7OREZGEhYWhp2dHZIkUVRURGxsLCkpKdTU1LTrmOXl5dTV1aFQKLok8dwlg91xtlFRqZPx1eGsJp+xwsAQl1PBn0nFKOQyYiYFWbo5Qh+iVMh5ar4pO/HnBzM4lVVu4RYJDSrrdDzxfSyFlfUEudqw9BJRMquz4uLiKC8vN/+sWLGi2f28vb2bBLyRkZFkZGR06vyjRo1CpVI1m+tnw4YNuLq6Mm/evAseZ/z48VRUVJhviltCvw1ihQuTyWTmKcU7B8iU4jqdgf/9nsTUF39nb1IRSrmMp+YN7XejelZWVqjVaiRJalIwvK9qqA1rbW2NjY2NpZvT4xwcHAgPDyc8PNw8lbq0tJT4+HiSkpLa/Hdu+MJxc3PrkszOKoWca6J9AFj1UwL/fGc/RzNE/emB5oO9plHYy4d64ec88N6fQueMD3Fl3ggfJAme3ByL0ShuhlmS3mDkkwPpTH1xF98fzwFg5bwhaJR9txpAb2Fvb4+Dg4P5p6UZVZMmTSIxMbHRtjNnzhAYGNip858+fRqdTtck148kSWzYsIFFixa1af3wsWPHsLKywsnJqVPt6YyBNX9UaGJGhCcb/kxjR0IBRqOEvJXMgH2Z0Sjxw4lsXvw1kZzyOgCG+zny5NwoonwcLNy67uHg4EBRUREVFRXmkdm+rGEq8UAZhW2JnZ0doaGh1NbWkpeXR0lJifmOrp2dHV5eXi2uF66pqaGyshKZTIaHh0eXtWn5pWFkp6eyO1/JkfRSrnlrH3OHe/Of2RH4u4iApr/Lr6jjxxOmC90lk8VIjdAxj82JZEd8Pscyyvj2aBbXjemfs+B6M0mS+D2xgDU/J5BUYLoxGuJmy2NzIpkW3nXfGcKFLV++nIkTJ7JmzRquu+46Dh48yHvvvdeo0kpJSQkZGRnk5Jg+fxuCXi8vL7y8vEhOTuazzz7jiiuuwM3Njbi4OB544AGio6OZNGlSo/Pt3LmT1NRUFi9e3KQtP/74I3l5eUyYMAFra2t+//13HnvsMW6//fYOL2vqCmIkdoAbF+yCnUZJUVU9p7L75xSev1KKueqtP1n+1QlyyuvwcbRi7fUj+f7uSYwJcrF087pNQ+DaH5I71dXVUV1dDZjWwwqm5Q/BwcEMHToUNzc3ZDIZVVVVJCUlERcXZx65Pl/DKOzfi8h3lkYp53J/I1vvu5hrR/shk8FPJ3OZ8cpunvslnoo6yxeaF7rPR/vS0BkkxgY5M9LfydLNEfooTwcrc4LFF35JoLxGfG70pLicCm5a9xe3fXiYpIIqnG1UPDVvCL8tv4QZkf0nt0ZfMXbsWDZt2sQXX3zB0KFDefrpp1m7di0LFy4077N582aio6OZM2cOAAsWLCA6Opp33nkHMJXP2bFjB7NmzSI8PJxly5Yxc+ZMtm/f3mQm1rp165g4cWKzJfdUKhVvvfUWEyZMYPjw4bz22musXr2al19+uRtfgQsTI7EDnFop55LBbvx8Ko8dCQWM6EcXIKlF1Tz3czxb40wX7nYaJXdNHcTii4OxUvX/KTENychqa2vR6XQWTy/fGQ2FuB0dHfv079EdNBoNgYGB+Pj4kJ+fT2FhIbW1taSmppKTk4OXlxeurq7odDpKS03TfLsr2ZeXgxUvXjuCmElBrPk5nj+Tinl3dwrfHM7ivkvDuGFcAKoW6oYKfVONVs9nf5nWaIlRWKGzYiYG89WhTJILq3llWyJPzR9q6Sb1e/kVdby8NZFvjmQhSaBWyImZFMQ900JxtBbft5Y0d+5c5s6d2+LjMTExzZbCaeDv78/u3bvbdK7PP/+8xcdmz57N7Nmz23ScniSuJgSmR5guaHfEW25xdlcqrdayavNpLntlN1vj8pHLYOFFAfz+4FTumRY6IAJYMNUks7W1Bfr+aKyYSnxhKpUKPz8/hg0bho+PD0qlkvr6etLT0zl16hRpaWlIkoS9vX23ryke4uPIp4svYn3MGAa521JSreXJH04za+0fbI/LF8mf+pFvj2RRXqsj0NWGS8VojdBJaqWc1ecC108OpBOX07e/u3qzGq2etdvPMPXFXXx92BTAzhnuzY4HpvDoFZEigBV6PTESKzA13B2ZDE7nVJBXXoeXo5Wlm9Qh9XoDn+xP5/UdZ6mo0wOm3+3RKyIZ7Nn/SiS1hYODA9XV1VRUVPTZALCyshKtVotCoeiXtWG7mlKpxNvbG09PTwoLC8nPz0en05nry/ZUySWZTMb0CE8mh7nz5cEMXt1+lpTCapZ8fJgJIa48NieSob7i79mXGYwS6/amArD44mAU/TSngtCzJoW6MWeYN1tO5bJycyxf3zGh3yVftCSDUWLj0Sxe3ppIfoWpRml0gBOPz4lidGDH64YLQk8TQayAm52GaH8njmaUsTOhgBsvCrB0k9pFkiR+ic3j+V8SyCgxlRuJ8LLnsTmRTA5zt3DrLMvBwYHc3Nw+PRLbMArr7OyMXC4mj7SVXC7H09MTDw8PiouLKSgoQKPR9PiNAJVCzs0Tgpgf7ctbvyez/s9U9qcUc+Wbe7km2o+HZoX32RtnA932+HzSi2twtFbxz9F+F36CILTRY3Mi2ZlQwKG0UjYdy+aaUaJ/dYU/k4p4Zks88bmmawJ/F2v+MzuCOcO8xY0Coc8RQawAwIxIT45mlLEjPr9PBbHHMkp5dks8h9NNa/3c7TU8OHMw/xztL0YFAFtbWxQKBXq9npqamj5XmsZoNJrXcfbVkWRLk8lkuLm5dUlN2M5wsFLxyOURLLwogBd/S2TziRw2Hs1iy6kcbp8cwh1TBmGrEV9JfckHe0xldRZeFICNWvzthK7j42TNvdNDefG3RNb8nMBlUZ5YDYyVQN0iqaCSNT8nsDPBVE7R3krJv6aHcsvEIFE2R+izxLCGAMD0CFPq9L1JRdRqDRZuzYVlltRw7+dHufqtfRxOL8VKJWfZjDB2PTiV68cGiAD2HJlMZk7w1BdHY0tLSzEajWg0Guzs7CzdHKEL+LvY8PoN0Wy6eyJjAp2p0xl5fWcSU1/axZcHMzCI+pB9wvHMMg6llaJSyLhlYpClmyP0Q0smBxPsZktRVT1rt5+1dHP6pKKqeh7//hSz1u5hZ0IBSrmMmIlB7H5oGrdfMkgEsEKfJm6dCoBp+q2vkzXZZbXsTykyJ3vqbSrqdPzv9yQ2/JmGVm9EJoN/jPLjwZliSmJLHBwcKCsro6KiAi8vL0s3p11EQqf+KzrAmW/unMCvsXk8/2sC6cU1PPLdKT7cl8ajV0RyyeCBvRSgt2sYhb1yhA+eDuKzV+h6GqWCVfOGcMv6g3y4L41rRvat7y9LqtMZWP9nKm/9nkxVvSlHyKWRnqy4IoJB7uKGsNA/iCBWABqSsHjwyYF0tscX9LogVmcw8sXBDNZuP0tJtRaAiYNMyWGG+IjkMK1pqBdbVVWF0WjsM+tKtVotlZWVgAhi+yuZTMblw7yZHulhTsqWkFfJovUHmTLYncfmDNykbL1ZVmkNv8TmAbDkYlFWR+g+Uwa7MzPKk61x+azeksANvevSpNcxGiV+PJnDf39NJLusFoChvg48dkUUEwaJ71GhfxFBrGA2PdIUxO6ML0C6SuoVi/wlSWJHfAFrfoknpbAagEHutjx6RSTTIzx6RRt7O41Gg0ajob6+nsrKyj6T4bdhFNbe3h61Wm3h1gjdSaNUsGRyCP8Y5cfrO8/yyf50dp8pZM/ZQhaMC2D5pYNxt9dYupnCOR/+mYbBKDEp1JUoHwdLN0fo556YG8XuM4X8lVpKhFLGHEs3qJc6lFbCMz/FcSKrHDDV7X5oVjhXR/siF0ushH6obwzJCD1iQogr1ioFeRV1xOVafv1kUVU9Cz/4iyUfHyalsBoXWzVPzx/Cr/ddwoxITxHAtkPDaGxfWhcrphIPPM62alZeOYRt909h1hBPjBJ8/lcGU1/8nU8OpFu6eQJQWafjy0OZgBiFFXqGv4sN90wLBeD7NDmVdToLt6h3qajTcfdnR7j2nf2cyCrHRq3gwZmD+f3BqfxjtJ8IYIV+SwSxgpmVSsHFYaYMpjviCyzcGnji+1j2JRejVsq5c8ogdj00lZsnBKFSiG7bXn0tiK2urqa+vh65XI6Tk5OlmyP0sGA3W969eQxf3T6e4X6OVGsNPPlDLMczyyzdtAHvq0OZVNXrCfWwY4pYtyz0kNsvCcHf2ZpynYx7vziBVm+0dJN6hXq9gds/PszPp/KQy+CGcf7semgq904Pw1otkjYJ/ZuIBoRGZpzLUrwjwbJB7J6zhfwSm4dCLuO7uybyyOUROFipLNqmvsze3h6ZTEZdXR1ardbSzbmg82vDKhTii3iguijEle/vnsT8kT5IEjz5Q6zIXmxBeoORDX+mAbD44mAxwiP0GCuVgteuH45aLrEvpYSHvj2BcYB/FhiNEvd/fYIDKSXYqhVsvGsiz10zHA97kWhNGBhEECs00lBq50RmGYWV9RZpg1ZvZOXm0wAsmhDIUN++sYazN1MoFNja2gK9fzTWaDRSUlICiKnEAsjlMh6bE4m9RsnJrHK+Ppxp6SYNWL/E5pFdVourrZqro30t3RxhgBnm68htg40o5TJ+OJ7D878mWLpJFiNJEs9siWfLyVxUChnv3jyG6ABnSzdLEHqUCGKFRjwcrBjuZwoaf7fQaOz6P1NJKazGzU7D8ssGW6QN/VFfmVJcXl6OwWBArVaL2rACAB72Vtx37rPgv78mUFbT+2cT9DeSJJnL6tw0PhArlZghIfS8SGeJZ6+KAuC9P1JYtzfVwi2yjPf3pLD+T9Pv/tK1I8xLwQRhIBFBrNDEjHPldXYk5Pf4uXPLa3l9h6mo+QoxhbhLnR/ESlLvnYbVMJXYxcVFJO8SzG6ZEEi4pz2lNTpe/C3R0s0ZcA6nl3Iiqxy1Us7NEwIt3RxhALsm2peHZoUD8PRPcfx4IsfCLepZ3x/LZs3PplHoR6+IYP5IMStCGJhEECs0MSPSNKV4z9ki6vWGHj33s1viqdEaGB3oLKardTEbGxsUCgUGg4GamhpLN6dZOp3OPFIsphIL51Mq5Dw1fwgAnx/MIDa73MItGlgaRmGvifbFzU6UOxIs6+6pg1h07mbKA1+fYF9ykYVb1DP2ni3ioW9PAHDbpGCWThYZwoWBSwSxQhNDfBzwdNBQozVwIKWkx867L7mIn07mIpfB6vlDRNKQLiaTyXr9lOKSkhIkScLW1hYrK5GcQmhsfIgr80aYkjw98UPsgE/s0lPSiqrZGmeambP44mALt0YQTN9nK68cwuVDvdAajNzx8RHicnrn91pXic0u545PDqMzSMwd7s3jcyLFbCVhQBNBrNCETCZj+rkpxTvje2ZKsc5gZOUPpmRON40PZIiPSObUHXp7ECtqwwoX8ticSGzVCo5llPHt0SxLN2dA2PBnKpIEU8PdCfO0t3RzBAEAhVzGq9ePZFywC5X1emI2HCSrtHfOMuqszJIaYjYcolprYEKIKy9fN0Lc6BcGPBHECs06v9ROT6yf/GhfGmcLqnCxVfPAZeHdfr6BqiGIra6uxmDo2aniF1JTU0NtbS0ymQxnZ5FlUWiep4MV/740DIAXfkmgvFZn4Rb1b2U1Wr4+bLpZIKYuCr2NlUrB+zePYbCnHQWV9dyy/iCl1f0r8VtJtZZF6w9SVFVPhJc97y4ajUYpEqsJQr8OYoOCgpDJZI1+HnnkkVafI0kSq1atwsfHB2tra6ZOncrp06d7qMW9x6RQNzRKOVmltZzJr+rWcxVU1LF2uymZ039mh+NoI5I5dRe1Wo2VlRWSJFFZWWnp5jTSMArr5OSEUqm0cGuE3ixmYjCD3G0prtby6rYzlm5Ov/b5wQxqdQYivOyZOEjMkBB6H0cbFR/dNg5vRyuSC6tZ8vFh6nS96yZtR9Vo9dz24SFSi6rxdbLmo9vGiYSXgnBOvw5iAVavXk1ubq755/HHH291///+97+88sorvPnmmxw6dAgvLy8uu+yyXnfB392s1QomhZpStnd3luLnfkmgql7PSH8nrh3t363nEnrnlGJJkkRtWKHN1Eo5q+cPBeDj/Wn9fi2cpWj1Rj7alwaYRmHF+juht/J2bAjwlBxJL+VfXxxDbzBaulmdojcY+dfnxzieWYajtYqPbhuLp4PIFTGQZGdnc9NNN+Hq6oqNjQ0jR47kyJEj5se/++47Zs2ahZubGzKZjOPHjzc5xtSpU5sM6C1YsKDRPm0Z9MvIyODKK6/E1tYWNzc3li1bhlZr2VkP/T6Itbe3x8vLy/zTWt1JSZJYu3Ytjz32GNdccw1Dhw7lo48+oqamhs8//7wHW907TD83pXhnfPfViz2YWsKmY9nIRDKnHtMbg9iKigr0ej1KpdLcPkFozaRQN+YM88YowcrNsb26bFRf9dPJHPIr6vGw13DlCB9LN0cQWjXY054PbhmLWilnW1w+T24+3Wc/FyRJ4rFNsexIKECjlLM+ZgyhHmI9+kBSWlrKpEmTUKlU/PLLL8TFxfHyyy/j5ORk3qe6uppJkybx/PPPt3qspUuXNhrQe/fdd5vs09qgn8FgYM6cOVRXV7N3716+/PJLNm7cyAMPPNBlv29H9Ps5ey+88AJPP/00/v7+XHvttTz00EOo1epm901NTSUvL4+ZM2eat2k0GqZMmcK+ffu44447eqrZvUJDEHs0o5SSai0uts2/bh2lNxh58odYABaMDWC4n1OXHl9onp2dHTKZjPr6eurr69FoLF8uQ9SGFTrisTmR7Ewo4FBaKd8fz+bqaD9LN6nfkCSJD/akAnDLxCDUyn5/z1voB8YFu/D6gpHc9dlRPv8rAy8HK5bNCLN0s9rt1e1n+epwJnIZvHFDNKMDXSzdJKGHvfDCC/j7+7NhwwbztqCgoEb73HzzzQCkpaW1eiwbGxu8vLxa3adh0K85W7duJS4ujszMTHx8TDc0X375ZWJiYnj22WctNvjQr4PYf//734waNQpnZ2cOHjzIihUrSE1N5YMPPmh2/7y8PAA8PT0bbff09CQ9Pb3F8zQEAw0aph7r9Xp0OssnHWloQ3vb4m6rJNLLnvi8SnbE5XLVyK69E//xgQwS8ipxslaxfEZIr3itBgqNRkNVVRXFxcW4u7s3ebyjfaYj9Ho9RUVFSJKEg4OD6Ad9UE/2l/O52yq5e0owL29PYs2WeKaEumJv1a+/1nrMazuSiMutwFol57pRPl3+t7VUnxH6rrb2mRnhbjw5J4KnfkrglW1ncLNVcu3ovnOD64tDmby+w5QnZNWVkUwb7CreJx3Umz5n9Ho9YIoRzp8Jp9Fomh1M2Lx5M7NmzeLaa69l9+7d+Pr6cvfdd7N06dJ2n/uzzz7j008/xdPTk8svv5yVK1dib994ZL+1Qb/9+/czdOhQcwALMGvWLOrr6zly5AjTpk1rd5u6Qp/7tl+1ahVPPfVUq/scOnSIMWPGsHz5cvO24cOH4+zszD//+U9eeOGFVtfd/X0kSJKkVkeHnnvuuWbbtGPHDtzc3Fpta0/atm1bu5/jr5ATj5zPd51EnXO8y9pSoYWXjisAGTO969i/a3uXHVu4sNLSUoqLi7G1tcXb27vF/TrSZ9qrvLycwsJCNBqN+UaS0Df1RH/5Ox8juFspKKzScv/67Vwd1LfXwfUGf+bL+DrFlP10nr+Ofbu67+9qiT4j9G1t6TMuwKW+crZny3n8+9OkJZxiiHPvn1p8qkTGukQ5IGOWrxHHwlP8/PMpSzerz+sNnzNFRUUAREVFNdq+cuVKVq1a1WT/lJQU3n77be6//34effRRDh48yLJly9BoNCxatKjN5124cCHBwcF4eXkRGxvLihUrOHHiRKPX5EKDfnl5eU0G+JydnVGr1Ra9butzQey9997bZEHy3/19uL3B+PHjAUhKSmo2iG0YRs/Ly2t0YV9QUNDkj3e+FStWcP/995v/n52dTVRUFDNmzMDX17fVtvYEnU7Htm3buOyyy1Cp2pfVziezjK3vHeRslZpLZ07tsill//kullpDDkN87Fl9y3gUYi1sj6qpqSEhIQG5XM6IESOa3KTpTJ9pr4SEBGpqavD19W31fSb0Xj3ZX5rjFF7E4o+PsidfwcP/uJgwz5ZzHwit2x5fwLcHjgNw79QQ/j0jtFvOY+k+I/Q97e0zl0sS/9l0mk3Hcvg4WcUnt45hpL9T9ze0g45mlPHwhsNIGLl2tC/Pzo8Sy2s6qTd9zmRnZwMQFxfXKDZoaUmX0WhkzJgxrFmzBoDo6GhOnz7N22+/3a4g9vyR26FDhxIWFsaYMWM4evQoo0aNAmjToF9zffFCg3zdrc8FsW5ubh0e3Tx27BhAiyNPDXcqtm3bRnR0NABarZbdu3fzwgsvtHjcv08FaJgmoFQqLf6mOZ9KpWp3e0YHueFmp6aoSsuJ7EomhnZ+ZPlIeinfHcsB4OmrhmGl6dq1tsKFOTg4YGVlhV6vR6vVtpjwrCN9pj3q6urQarWoVCo8PT171ftFaL/u7i8tmRHlzcwoT7bG5bP65wS+WDpeXPx1wJH0Eu77+iRGCRaM9eeBWRHd/jpaqs8IfVd7+sx//zmCkmodu88Ucvunx9h410RC3HvfTa6kgiru+OwY9Xoj0yM8eO6a4SgVYh16V+kNnzMNpQPt7e3btIbU29u7yahtZGQkGzdu7FQ7Ro0ahUql4uzZs+Yg9u/+Pujn5eXFX3/91Wif0tJSdDqdRQcf+u07ZP/+/bz66qscP36c1NRUvv76a+644w7mzZtHQECAeb+IiAg2bdoEmO4y3HfffaxZs4ZNmzYRGxtLTEwMNjY23HjjjZb6VSxKLpcxLdyU4GlHQuezFBuMEis3m5I5XTfGj1EBzp0+ptB+MpmsV2Qpbkjo5ODgYPEvGKFve2JuFBqlnAMpJfx4MtfSzelzkgqqWPzRYer1RmZEePDMVUPFjQChz1Mp5Ly1cBTD/RwprdGxaP1BCirqLN2sRvIr6rhl/UHKanSM8HfizRujRQArMGnSJBITExttO3PmDIGBgZ067unTp9HpdK0uJfv7oN+ECROIjY0lN/f/v1u3bt2KRqNh9OjRnWpPZ/Tbd4lGo+Grr75i6tSpREVF8eSTT7J06VK++OKLRvslJiZSXl5u/v/DDz/Mfffdx913382YMWPIzs5m69atTRZADyQzIs8FsfH5nU5X//nBDGKzK3CwUvLw7IiuaJ7QQZYOYkVtWKEr+bvYcPdU09TXZ7fEUV2vt3CL+o7zL6JH+jvxhriIFvoRW42S9TFjCXS1Iau0lpgNh6iss3yiH4CKOh23rD9IdlktwW62rL9lDDbqPjdJUugGy5cv58CBA6xZs4akpCQ+//xz3nvvPe655x7zPiUlJRw/fpy4uDjAFNMcP37cvE41OTmZ1atXc/jwYdLS0vj555+59tpriY6OZtKkSUDbBv1mzpxJVFQUN998M8eOHWPHjh08+OCDLF261KJlEfvtt9SoUaM4cOAAZWVl1NbWkpCQwKpVq7CxsWm0nyRJxMTEmP8vk8lYtWoVubm51NXVsXv3boYOHdrDre9dLg5zR62Qk1ZcQ0pRdYePU1Kt5aXfTHeVHpgZjpud5Uu7DGQNN2aqq6vNWfN6UlVVFVqtFoVCgaOjY4+fX+h/7pgSQoCLDfkV9by+86ylm9MnnH8RHeJmy/qYseIiWuh33Ow0fHzbOFxt1cTlVnDnp0fQ6i2bBK5eb+D2jw+TkFeJu/259onrIuGcsWPHsmnTJr744guGDh3K008/zdq1a1m4cKF5n82bNxMdHc2cOXMAWLBgAdHR0bzzzjsAqNVqduzYwaxZswgPD2fZsmXMnDmT7du3o1CYkve1ZdBPoVCwZcsWrKysmDRpEtdddx1XXXUVL730Ug++Ik2Jbyrhguw0Si4KcWHP2SJ2xhcwqIPrSV78LYHyWh2R3g4svCjgwk8QupVarcbKyoq6ujoqKytxdu7Zqd3n14aVy/vt/TShB1mpFKy8MorFHx1m3Z5Urh3tT6hH71v/1lvU6w3c8fER80X0R7eN6/J64ILQWwS62rLh1rEseO8AfyYV89C3J3j1upHILZBY0miUuP/rExxIKcFOo2RDzFj8XWwu/ERhQJk7dy5z585t8fGYmJhGA3F/5+/vz+7du1s9R8Og34UEBATw008/XXC/niSuHIU2mRFhmlK8PT6/Q88/kVnGl4cyAXh6/hAxVa2XsNSUYoPBQGlpKSCmEgtda0akJzMiPNAbJVZtPt3pJRD9ldEo8cDXJ9ifUiwuooUBY7ifE28tHIVSLuOH4zk8/2tCj7dBkiSe2RLPlpO5qBQy3rlpNEN9xWwkQWgvEUkIbTIj0pR97HB6KeU17VtLYjRKPPlDLJIE10T7MibIpTuaKHRAwzTeng5iy8rKMBqNaDQabG1te/TcQv/35JVRqJVy9iYV8WusqD38dw0X0T+Ji2hhAJoa7sEL/xgOwHt/pLBub2qPnv/9PSms/9N0zpeuHcHFYZ2v+iAIA5EIYoU28XexYbCnHQajxO6zhe167leHMzmRVY69RskjV4hkTr2JnZ0dMpkMrVZLXV3PZWxsmEosRmGF7hDoasudl4QA8PRPcdRoRZKn84mLaGGg+8doPx6eHQ6YPiN+PJHTI+f9/lg2a342jf4+ekUE80f6XuAZgiC0RASxQptNjzCNxu5ox5Tishot/z03Xee+ywbjYW/VLW0TOkYul5trxPbUaKxWq6WyshIQQazQfe6aGoqvkzU55XW89XuypZvTa4iLaEEwuWvKIG6ZYCpX8sDXJ9iXXNSt59t7toiHvj0BwG2Tglk6OaRbzycI/Z1I7CS02aWRHryzO5ldiYXoDcY2rWt9aWsipTU6BnvasWhC52pbCd3DwcGByspKKioq8PDw6PbzNYzC2tvbo1aLJDJC97BWK3hibhR3fnqE9/5I4R+j/Qh269mp65IksS+5GEdrVa+YrisuogXh/8lkMp68cgiFVfX8fCqPOz4+wkOzw1F3Q86Oer2R//6agM4gMXe4N4/PiRR1mAWhk0QQK7RZdIAzTjYqymp0HM0oY1xw62tbY7PL+eyvDABWzx+KSiRz6pUcHR3Jzs6msrISSZK69Yu1qqqKwkLTdHQxCit0t1lDPLlksDt/nCnkqR9PsyFmbI9dOJ7ILOOZLXEcSjMlMLtyhA8Pzwq3WPKk2Oxy7vjksLiIFoTzKOQyXrluJEVVBzmYWsKTP5zu1vNNCHHl5etGWCQjsiD0NyKIFdpMIZcxLdyDTcey2RGf32oQe34yp3kjfBgfIgKW3sra2hqVSoVOp6OqqspcP7Yr1dbWkp2dTXl5OQAqlarHS/oIA49MJmPVlVHMWvsHuxIL2R5fwGVRnt16zqzSGl78LZEfjpvW2KmVcnQGIz+eyOG303ncOimIe6aF4mCl6tZ2nC+zpIaYDYeo1hrERbQg/I2VSsH7N4/h1e1nyCqt6bbz+DnbcP/MwWiUim47hyAMJCKIFdplRuS5IDahgBVXRLa438ajWRzNKMNWreDRVvYTegd7e3tKSkqoqKjo0iBWq9WSk5NjnkIsk8lwc3PD29tb1IYVekSIux1LJofw9q5knvrxNJPD3LBSdf1FZGWdjrd2JbNubypavRGAa0b58tCscIqrtDy7JZ79KcW8uzuFbw5ncd+lYdwwLqDbZ6iUVGtZtP4gRVX1RHjZ8+6i0eIiWhD+xtFGxap5QyzdDEEQ2kFcRQrtMjnMHaVcRlJBFenF1c3uU16r4/lfTIlDls0Iw8tRJHPq7bq6XqxerycrK4vY2FhzAOvs7ExUVBQBAQGoVD03CiUI/5oeirejFVmltby9q2uTPOkNRj45kM7UF3fx9q5ktHojFwW78OO9F/PKdSPxdrRmqK8jny+9iA8WjSHE3ZaSai1P/nCa2Wv/YEd8frfVsq3R6rntw0OkFlXj62TNR7eN69ERYEEQBEHoLiKIFdrF0VrF2HN1XnfEFzS7z6vbzlBcrWWQuy23TgruyeYJHdQQxNbU1KDXd7wcidFoJC8vj9jYWPLzTRfn9vb2REREEBISgpWVuKEh9DwbtZLH50QB8PbuZDKKOz9lUJIkdibkM/u1PTzxfSzF1VpC3Gx57+bRfHn7eIb5NU7kJJPJuDTKk9/uu4TV84fgYqsmubCaxR8dZuEHf3E6p7zTbTqf3mDkX58f43hmGY7WKj66bSyeDuL9JwiCIPQPIogV2m1GpCmD7c6EpkFsfG4FH+9PA+CpeUNRK0UX6wtUKhXW1tZAx0ZjJUmiqKiI2NhYsrOzMRgMWFtbExoayuDBg7G17dmssILwd1cM82JSqCtavZHVP8V16lhxORXctO4vbvvwMEkFVTjbqHhq3hB+W34JM4d4tZowSaWQs2hCELsemsodU0JQK+TsSy5m7ht7efCbE+SVd75esyRJPLYplh0JBWiUctbHjCHUo+vXuguCIAiCpYgIQ2i3GZGmxCh/pRZTWaczb5ckUzIno2S6YLw4zM1STRQ6oKNTisvKyoiLiyM9PR2dTodarSYoKIjIyEgcHS1fVkQQwDQS+tS8ISjlMrbH5/N7MzfhLiS/oo6Hvz3BnDf28GdSMWqFnNsvCWHXQ9O4ZWJQu9a3OlipWHF5JDsemMKVI3yQJPj2SBbTXtrFK9vOUF3f8RkRr24/y1eHM5HL4I0bohkd2HomeUEQBEHoa0QQK7RbsJstIW626AwSe87+f3Hw749ncyitFGuVwjx1T+g72hvEVlVVkZCQQHJyMnV1dSiVSvz8/BgyZAiurq6ifIfQ64R62HPbxaYlDqt+PE2dztCm59Vo9azdfoapL+7i68NZSBLMGe7Njgem8OgVkThad3ydqb+LDW/cEM2muycyOtCZWp2B13ecZdpLu/jqUAYGY/vWy372Vzqv7zgLwNNXDWXmEK8Ot00QBEEQeisRxAod0jCluGFdbGWdjjU/m5I53Ts9FB8na4u1TegYOzs75HI5Op2O2traFverra0lKSmJxMREqqurkcvleHt7M3ToUDw9PUXWYaFXWzYjDA97DenFNXywJ6XVfQ1Gia8PZzLtpV2s3X6WWp2B6AAnNt41kf/dOKpLa75GBzjz7Z0TeGvhKAJcbCiorOc/G08x5/U97Dlb2KZjbD2dxxPfxwKwbHooCy8K7LL2CYIgCEJvIq42hQ6ZHmGaUrwrsQCDUeK17WcprKwn2M2WJZNFMqe+SC6XY2dnBzQ/GqvVaklLSyMuLo7y8nJkMhnu7u4MHToUHx8fFApRtkPo/ew0Sh6bYyr79ebvSS3WhfwzqYi5b+zl4W9Pkl9Rj7+LNW/eGM13d5lGTLuDTCbjimHebLv/Eh67IhIHKyUJeZXcvO4gt244yNn8yhafeyS9hH99cQyjBNeP8Wf5ZYO7pY2CIAiC0BuIOrFCh4wJcsbeSklxtZZvDmeyYV8aACuvjBI1CPswBwcHKioqGgWxer2evLw8CgoKzKVAnJ2d8fHxEdmGhT5p3ggfPv8rg79SS3jmp3jeuXm0+bGkgkrW/JxgTlxnb6XkX9NDuWViUI99tmmUCpZeEsI/R/vx2o6zfHognd8TC/njbBELxpoCVDc7zXltrmLxR4ep1xuZHuHBs1cPFdP5BUEQhH5NBLFCh6gUcqaGe/DjiRwe+z4Wg1FiZpQnU8M9LN00oRMa1sVWVVVhMBjIy8ujuLgYg8G0dtDe3h5fX1+RbVjo02QyGU/NH8Kc1/fy6+k8/jhTSJSPA2u3n+GLg5kYjBJKuYybxgeybEYYLrZqi7TT2VbNqnlDWDQhkOd/SWBrXD6f/ZXBD8dzuGvqIBZfHEx5rY5b1h+krEbHCH8n3rwxGmU7EkwJgiAIQl8kglihw2ZEmIJYg1FCo5TzxFyRzKmvs7a2RqVSodfrSU9Px9fXF6VSibW1Nb6+viLbsNBvRHg5sGhCIBv+TOOhb09QU2+g8lxG4EsjPVlxRQSD3O0s3EqTEHc73ls0hgMpxTy7JZ5T2eW8+Fsin/+VgbVaQXZZLcFutqy/ZQw2avG1LgiCIPR/4nat0GFTBrsjPzdj7e6poV2a5ESwnIbRWKPRiEqlEuVyhH6rYVpufkU9lfV6hvo68MXS8Xxwy5heE8Ceb3yIKz/cM4lXrx+Bj6MV2WW1JBVU4Wan4ePbxuF63hRjQRAEoW/Lzs7mpptuwtXVFRsbG0aOHMmRI0fMj3/33XfMmjULNzc3ZDIZx48fb3KMqVOnIpPJGv0sWLDA/HhaWhqLFy8mODgYa2trBg0axMqVK9FqtY2O8/djyGQy3nnnnW773dtC3LIVOszZVs2Ds8JJyq/ijikhlm6O0EW8vLyora3Fzc2NIUOGoNGIC2Ohf3KwUrH2+pG8szuZa0b5ctVIX+Ty3r2WVC6XcXW0H5cP9Wbd3lQOpBTzyOUR4iaiIAhCP1JaWsqkSZOYNm0av/zyCx4eHiQnJ+Pk5GTep7q6mkmTJnHttdeydOnSFo+1dOlSVq9ebf6/tfX/VxBJSEjAaDTy7rvvEhoaSmxsLEuXLqW6upqXXnqp0XE2bNjA7Nmzzf+39OCGCGKFTrl7aqilmyB0MSsrK0JDQzlz5owolyP0exeHuXFxmJulm9FuVioF90wL5Z5p4jNYEAShv3nhhRfw9/dnw4YN5m1BQUGN9rn55psB02hqa2xsbPDyar5m+OzZsxsFpiEhISQmJvL22283CWKdnJxaPI4l9Nsr1F27djU79C2TyTh06FCLz4uJiWmy//jx43uw5YIgCIIgCIIg9DeVlZXmKhAVFRXU19c3u9/mzZsZM2YM1157LR4eHkRHR/P+++936JyfffaZeXbdgw8+SGVly+XaAMrLy3FxcWmy/d5778XNzY2xY8fyzjvvYDQaO9SertJvR2InTpxIbm5uo21PPPEE27dvZ8yYMa0+d/bs2Y3ufKjVlslMKQiCIAiCIAhC/xAV1TgJ6sqVK1m1alWT/VJSUnj77be5//77efTRRzl48CDLli1Do9GwaNGiNp9v4cKFBAcH4+XlRWxsLCtWrODEiRNs27at2f2Tk5N54403ePnllxttf/rpp5kxYwbW1tbs2LGDBx54gKKiIh5//PE2t6Wr9dsgVq1WNxry1ul0bN68mXvvvfeC9fM0Gk2vGi4XBEEQBEEQBKFvi4uLw9fX1/z/lvKOGI1GxowZw5o1awCIjo7m9OnTvP322+0KYs9fKzt06FDCwsIYM2YMR48eZdSoUY32zcnJYfbs2Vx77bUsWbKk0WPnB6sjR44EYPXq1SKI7QmbN2+mqKiImJiYC+67a9cuPDw8cHJyYsqUKTz77LN4eLRc/7S+vr7RdICGYXq9Xo9Op+t02zuroQ29oS1C3yD6jNAeor8I7SX6jNBeos8I7dWb+oxebyrhZm9vb64C0Rpvb+8mo7aRkZFs3LixU+0YNWoUKpWKs2fPNgpic3JymDZtGhMmTOC999674HHGjx9PRUUF+fn5eHp6dqpNHTVggth169Yxa9Ys/P39W93v8ssv59prryUwMJDU1FSeeOIJpk+fzpEjR1q8W/Lcc8/x1FNPNdm+Y8cO3Nx6T8KQlqYOCEJLRJ8R2kP0F6G9RJ8R2kv0GaG9ekOfKSoqatf+kyZNIjExsdG2M2fOEBgY2Kl2nD59Gp1Oh7e3t3lbdnY206ZNY/To0WzYsKFNST2PHTuGlZVVo2zJPU0mSZJksbN3wKpVq5oNGM936NChRutes7KyCAwM5Ouvv+Yf//hHu86Xm5tLYGAgX375Jddcc02z+/x9JDY7O5uoqChSU1MbTRmwFJ1Ox7Zt27jssstQqVSWbo7QB4g+I7SH6C9Ce4k+I7SX6DNCe/WmPpOdnU1wcDCZmZn4+fldcP9Dhw4xceJEnnrqKa677joOHjzI0qVLee+991i4cCEAJSUlZGRkkJOTw5w5c/jyyy8JDw/Hy8sLLy8vkpOT+eyzz7jiiitwc3MjLi6OBx54AGtraw4dOoRCoSAnJ4cpU6YQEBDAxx9/jEKhMLehYWnljz/+SF5eHhMmTMDa2prff/+dBx54gJiYGF577bXuecHaoM+NxN57772NivQ25+8pqDds2ICrqyvz5s1r9/m8vb0JDAzk7NmzLe6j0WgajdJWVFQAoFQqLf6mOZ9KpepV7RF6P9FnhPYQ/UVoL9FnhPYSfUZor97QZ5TK9oVcY8eOZdOmTaxYsYLVq1cTHBzM2rVrzQEsmJZK3nrrreb/N8RHDcmi1Go1O3bs4LXXXqOqqgp/f3/mzJnDypUrzcHq1q1bSUpKIikpqUlw3TDOqVKpeOutt7j//vsxGo2EhISwevVq7rnnng69Fl2lzwWxbm5u7ZqiK0kSGzZsYNGiRR3qwMXFxWRmZjYadr+QhpTTf8+ObCl6vZ6ioiKys7Pb/SYSBibRZ4T2EP1FaC/RZ4T2En1GaK/e1GcaYoL2lKWZO3cuc+fObfHxmJiYVnP9+Pv7s3v37lbPcaFjQNNasr1Fv/8U2LlzJ6mpqSxevLjZxyMiInjuuee4+uqrqaqqYtWqVfzjH//A29ubtLQ0Hn30Udzc3Lj66qvbfM78/HwAxo0b1yW/gyAIgiAIgiAIfVt+fj4BAQGWbka/0O+D2HXr1jFx4kQiIyObfTwxMZHy8nIAFAoFp06d4uOPP6asrAxvb2+mTZvGV199hb29fZvPGR0dzcGDB/H09GzT4ujuVllZSVRUFHFxce36PYSBS/QZoT1EfxHaS/QZob1EnxHaqzf1GaPRSH5+PtHR0RZtR3/S5xI7Ce1XUVGBo6Mj5eXlbUrrLQiizwjtIfqL0F6izwjtJfqM0F6iz/Rvlh8mFARBEARBEARBEIQ2EkGsIAiCIAiCIAiC0GeIIHYA0Gg0rFy5slEZIEFojegzQnuI/iK0l+gzQnuJPiO0l+gz/ZtYEysIgiAIgiAIgiD0GWIkVhAEQRAEQRAEQegzRBArCIIgCIIgCIIg9BkiiBUEQRAEQRAEQRD6DBHECoIgCIIgCIIgCH2GCGIt4K233iI4OBgrKytGjx7Nnj17Gj2en59PTEwMPj4+2NjYMHv2bM6ePXvB427cuJGoqCg0Gg1RUVFs2rSp3eduTkZGBldeeSW2tra4ubmxbNkytFpto31OnTrFlClTsLa2xtfXl9WrVyNyhnWN/tZf6urqiImJYdiwYSiVSq666qoLvwhCu/S3PrNr1y7mz5+Pt7c3tra2jBw5ks8++6wNr4TQVv2tzyQmJjJt2jQ8PT2xsrIiJCSExx9/HJ1O14ZXQ2iL/tZnzpeUlIS9vT1OTk4XPK7Qdv2tz6SlpSGTyZr8/Prrr214NYROk4Qe9eWXX0oqlUp6//33pbi4OOnf//63ZGtrK6Wnp0uSJElGo1EaP368NHnyZOngwYNSQkKCdPvtt0sBAQFSVVVVi8fdt2+fpFAopDVr1kjx8fHSmjVrJKVSKR04cKDN526OXq+Xhg4dKk2bNk06evSotG3bNsnHx0e69957zfuUl5dLnp6e0oIFC6RTp05JGzdulOzt7aWXXnqpC16xga0/9peqqirpzjvvlN577z1p1qxZ0vz58zv/Qglm/bHPPPvss9Ljjz8u/fnnn1JSUpL02muvSXK5XNq8eXMXvGJCf+wzycnJ0vr166Xjx49LaWlp0g8//CB5eHhIK1as6IJXTOiPfaaBVquVxowZI11++eWSo6Njx18koZH+2GdSU1MlQNq+fbuUm5tr/qmvr++CV0y4EBHE9rBx48ZJd955Z6NtERER0iOPPCJJkiQlJiZKgBQbG2t+XK/XSy4uLtL777/f4nGvu+46afbs2Y22zZo1S1qwYEGbz92cn3/+WZLL5VJ2drZ52xdffCFpNBqpvLxckiRJeuuttyRHR0eprq7OvM9zzz0n+fj4SEajscVjCxfWH/vL+W655RYRxHax/t5nGlxxxRXSrbfe2uLjQtsNlD6zfPly6eKLL27xcaHt+nOfefjhh6WbbrpJ2rBhgwhiu1B/7DMNQeyxY8daPI7QfcR04h6k1Wo5cuQIM2fObLR95syZ7Nu3D4D6+noArKyszI8rFArUajV79+5t8dj79+9vctxZs2aZj9uWcwOsWrWKoKCgRscdOnQoPj4+jY5bX1/PkSNHzPtMmTKlUTHpWbNmkZOTQ1paWottFlrXX/uL0H0GUp8pLy/HxcWlxceFthkofSYpKYlff/2VKVOmtNheoW36c5/ZuXMn33zzDf/73/9afQ2E9unPfQZg3rx5eHh4MGnSJL799tsW2yp0LRHE9qCioiIMBgOenp6Ntnt6epKXlwdAREQEgYGBrFixgtLSUrRaLc8//zx5eXnk5ua2eOy8vLxWj9uWcwO4ubkxaNCgVo/r7OyMWq02P6+lczc8JnRMf+0vQvcZKH3m22+/5dChQ9x6660ttldom/7eZyZOnIiVlRVhYWFMnjyZ1atXX+glES6gv/aZ4uJiYmJi+PDDD3FwcGjryyG0QX/tM3Z2drzyyit8++23/Pzzz8yYMYPrr7+eTz/9tK0vjdAJIoi1AJlM1uj/kiSZt6lUKjZu3MiZM2dwcXHBxsaGXbt2cfnll6NQKDp83Lbuc++997Jjx45Wn9Pc85o7bkvPFdqnP/YXoXv15z6za9cuYmJieP/99xkyZEir7RXarr/2ma+++oqjR4/y+eefs2XLFl566aVW2yu0XX/rM0uXLuXGG2/kkksuabV9Qsf1tz7j5ubG8uXLGTduHGPGjGH16tXcfffd/Pe//221vULXEEFsD3Jzc0OhUDS5U1xQUNDobs/o0aM5fvw4ZWVl5Obm8uuvv1JcXExwcHCLx/by8mr1uG09d1uOW1paik6nMz+vpXMDrR5baF1/7S9C9+nvfWb37t1ceeWVvPLKKyxatKjFYwpt19/7jL+/P1FRUdxwww08//zzrFq1CoPB0OKxhQvrr31m586dvPTSSyiVSpRKJYsXL6a8vBylUsn69etbeUWEC+mvfaY548ePb1NGZaHzRBDbg9RqNaNHj2bbtm2Ntm/bto2JEyc22d/R0RF3d3fOnj3L4cOHmT9/fovHnjBhQpPjbt261Xzc9p77/OPGxsY2msqxdetWNBoNo0ePNu/zxx9/NEo7vnXrVnx8fBqtLxDap7/2F6H79Oc+s2vXLubMmcPzzz/P7bff3uLxhPbpz33m7yRJQqfTifJvndRf+8z+/fs5fvy4+Wf16tXY29tz/Phxrr766haPLVxYf+0zzTl27Bje3t4tPi50oR5KICWc05Dme926dVJcXJx03333Sba2tlJaWpp5n6+//lr6/fffpeTkZOn777+XAgMDpWuuuabV4/7555+SQqGQnn/+eSk+Pl56/vnnW0wx3tq533jjDWn69Onm/zekGJ8xY4Z09OhRafv27ZKfn1+jFONlZWWSp6endMMNN0inTp2SvvvuO8nBwUGU2OkC/bG/SJIknT59Wjp27Jh05ZVXSlOnTpWOHTsmsvt1kf7YZ37//XfJxsZGWrFiRaMyBsXFxV3xkg14/bHPfPrpp9JXX30lxcXFScnJydLXX38t+fr6SgsXLuyKl2zA64995u9EduKu1R/7zIcffih99tlnUlxcnJSQkCC9+OKLkkqlkl555ZWueMmECxBBrAX873//kwIDAyW1Wi2NGjVK2r17d6PHX3vtNcnPz09SqVRSQECA9Pjjj7ep5tQ333wjhYeHSyqVSoqIiJA2btzY7nOvXLlSCgwMbLQtPT1dmjNnjmRtbS25uLhI9957b6NyOpIkSSdPnpQmT54saTQaycvLS1q1apUor9NF+mN/CQwMlIAmP0LX6G995pZbbmm2v0yZMqXtL4rQqv7WZ7788ktp1KhRkp2dnWRraytFRUVJa9askWpra9vxqgit6W995u9EENv1+luf+fDDD6XIyEjJxsZGsre3l0aPHi198skn7XhFhM6QSZKYVyMIgiAIgiAIgiD0DWJNrCAIgiAIgiAIgtBniCBWEARBEARBEARB6DNEECsIgiAIgiAIgiD0GSKIFQRBEARBEARBEPoMEcQKgiAIgiAIgiAIfYYIYgVBEARBEARBEIQ+QwSxgiAIgiAIgiAIQp8hglhBEARBEARBEAShzxBBrCAIgiAIgiAIgtBniCBWEARBEARBEARB6DNEECsIgiAIgiAIgiD0GSKIFQRBEARBEARBEPqM/wP4SGhQbAVgkAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x600 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "stats.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "023d8490-71f9-46ac-8fe1-db7c1f3626d4",
   "metadata": {},
   "source": [
    "Bokeh using Holoviews is also supported."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "01b54083-5fa9-4d9d-b638-6cfa79ed6ef7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "(function(root) {\n",
       "  function now() {\n",
       "    return new Date();\n",
       "  }\n",
       "\n",
       "  var force = true;\n",
       "  var py_version = '3.4.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",
       "  var reloading = false;\n",
       "  var Bokeh = root.Bokeh;\n",
       "\n",
       "  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
       "    root._bokeh_timeout = Date.now() + 5000;\n",
       "    root._bokeh_failed_load = false;\n",
       "  }\n",
       "\n",
       "  function run_callbacks() {\n",
       "    try {\n",
       "      root._bokeh_onload_callbacks.forEach(function(callback) {\n",
       "        if (callback != null)\n",
       "          callback();\n",
       "      });\n",
       "    } finally {\n",
       "      delete root._bokeh_onload_callbacks;\n",
       "    }\n",
       "    console.debug(\"Bokeh: all callbacks have finished\");\n",
       "  }\n",
       "\n",
       "  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
       "    if (css_urls == null) css_urls = [];\n",
       "    if (js_urls == null) js_urls = [];\n",
       "    if (js_modules == null) js_modules = [];\n",
       "    if (js_exports == null) js_exports = {};\n",
       "\n",
       "    root._bokeh_onload_callbacks.push(callback);\n",
       "\n",
       "    if (root._bokeh_is_loading > 0) {\n",
       "      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
       "      return null;\n",
       "    }\n",
       "    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
       "      run_callbacks();\n",
       "      return null;\n",
       "    }\n",
       "    if (!reloading) {\n",
       "      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
       "    }\n",
       "\n",
       "    function on_load() {\n",
       "      root._bokeh_is_loading--;\n",
       "      if (root._bokeh_is_loading === 0) {\n",
       "        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
       "        run_callbacks()\n",
       "      }\n",
       "    }\n",
       "    window._bokeh_on_load = on_load\n",
       "\n",
       "    function on_error() {\n",
       "      console.error(\"failed to load \" + url);\n",
       "    }\n",
       "\n",
       "    var skip = [];\n",
       "    if (window.requirejs) {\n",
       "      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n",
       "      root._bokeh_is_loading = css_urls.length + 0;\n",
       "    } else {\n",
       "      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
       "    }\n",
       "\n",
       "    var existing_stylesheets = []\n",
       "    var links = document.getElementsByTagName('link')\n",
       "    for (var i = 0; i < links.length; i++) {\n",
       "      var link = links[i]\n",
       "      if (link.href != null) {\n",
       "\texisting_stylesheets.push(link.href)\n",
       "      }\n",
       "    }\n",
       "    for (var i = 0; i < css_urls.length; i++) {\n",
       "      var url = css_urls[i];\n",
       "      if (existing_stylesheets.indexOf(url) !== -1) {\n",
       "\ton_load()\n",
       "\tcontinue;\n",
       "      }\n",
       "      const element = document.createElement(\"link\");\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.rel = \"stylesheet\";\n",
       "      element.type = \"text/css\";\n",
       "      element.href = url;\n",
       "      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
       "      document.body.appendChild(element);\n",
       "    }    var existing_scripts = []\n",
       "    var scripts = document.getElementsByTagName('script')\n",
       "    for (var i = 0; i < scripts.length; i++) {\n",
       "      var script = scripts[i]\n",
       "      if (script.src != null) {\n",
       "\texisting_scripts.push(script.src)\n",
       "      }\n",
       "    }\n",
       "    for (var i = 0; i < js_urls.length; i++) {\n",
       "      var url = js_urls[i];\n",
       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    for (var i = 0; i < js_modules.length; i++) {\n",
       "      var url = js_modules[i];\n",
       "      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onload = on_load;\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.src = url;\n",
       "      element.type = \"module\";\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    for (const name in js_exports) {\n",
       "      var url = js_exports[name];\n",
       "      if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
       "\tif (!window.requirejs) {\n",
       "\t  on_load();\n",
       "\t}\n",
       "\tcontinue;\n",
       "      }\n",
       "      var element = document.createElement('script');\n",
       "      element.onerror = on_error;\n",
       "      element.async = false;\n",
       "      element.type = \"module\";\n",
       "      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
       "      element.textContent = `\n",
       "      import ${name} from \"${url}\"\n",
       "      window.${name} = ${name}\n",
       "      window._bokeh_on_load()\n",
       "      `\n",
       "      document.head.appendChild(element);\n",
       "    }\n",
       "    if (!js_urls.length && !js_modules.length) {\n",
       "      on_load()\n",
       "    }\n",
       "  };\n",
       "\n",
       "  function inject_raw_css(css) {\n",
       "    const element = document.createElement(\"style\");\n",
       "    element.appendChild(document.createTextNode(css));\n",
       "    document.body.appendChild(element);\n",
       "  }\n",
       "\n",
       "  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.2.min.js\", \"https://cdn.holoviz.org/panel/1.4.4/dist/panel.min.js\"];\n",
       "  var js_modules = [];\n",
       "  var js_exports = {};\n",
       "  var css_urls = [];\n",
       "  var inline_js = [    function(Bokeh) {\n",
       "      Bokeh.set_log_level(\"info\");\n",
       "    },\n",
       "function(Bokeh) {} // ensure no trailing comma for IE\n",
       "  ];\n",
       "\n",
       "  function run_inline_js() {\n",
       "    if ((root.Bokeh !== undefined) || (force === true)) {\n",
       "      for (var i = 0; i < inline_js.length; i++) {\n",
       "\ttry {\n",
       "          inline_js[i].call(root, root.Bokeh);\n",
       "\t} catch(e) {\n",
       "\t  if (!reloading) {\n",
       "\t    throw e;\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "      // Cache old bokeh versions\n",
       "      if (Bokeh != undefined && !reloading) {\n",
       "\tvar NewBokeh = root.Bokeh;\n",
       "\tif (Bokeh.versions === undefined) {\n",
       "\t  Bokeh.versions = new Map();\n",
       "\t}\n",
       "\tif (NewBokeh.version !== Bokeh.version) {\n",
       "\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
       "\t}\n",
       "\troot.Bokeh = Bokeh;\n",
       "      }} else if (Date.now() < root._bokeh_timeout) {\n",
       "      setTimeout(run_inline_js, 100);\n",
       "    } else if (!root._bokeh_failed_load) {\n",
       "      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
       "      root._bokeh_failed_load = true;\n",
       "    }\n",
       "    root._bokeh_is_initializing = false\n",
       "  }\n",
       "\n",
       "  function load_or_wait() {\n",
       "    // Implement a backoff loop that tries to ensure we do not load multiple\n",
       "    // versions of Bokeh and its dependencies at the same time.\n",
       "    // In recent versions we use the root._bokeh_is_initializing flag\n",
       "    // to determine whether there is an ongoing attempt to initialize\n",
       "    // bokeh, however for backward compatibility we also try to ensure\n",
       "    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
       "    // before older versions are fully initialized.\n",
       "    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
       "      root._bokeh_is_initializing = false;\n",
       "      root._bokeh_onload_callbacks = undefined;\n",
       "      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
       "      load_or_wait();\n",
       "    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
       "      setTimeout(load_or_wait, 100);\n",
       "    } else {\n",
       "      root._bokeh_is_initializing = true\n",
       "      root._bokeh_onload_callbacks = []\n",
       "      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
       "      if (!reloading && !bokeh_loaded) {\n",
       "\troot.Bokeh = undefined;\n",
       "      }\n",
       "      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
       "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
       "\trun_inline_js();\n",
       "      });\n",
       "    }\n",
       "  }\n",
       "  // Give older versions of the autoload script a head-start to ensure\n",
       "  // they initialize before we start loading newer version.\n",
       "  setTimeout(load_or_wait, 100)\n",
       "}(window));"
      ],
      "application/vnd.holoviews_load.v0+json": "(function(root) {\n  function now() {\n    return new Date();\n  }\n\n  var force = true;\n  var py_version = '3.4.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n  var reloading = false;\n  var Bokeh = root.Bokeh;\n\n  if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n    root._bokeh_timeout = Date.now() + 5000;\n    root._bokeh_failed_load = false;\n  }\n\n  function run_callbacks() {\n    try {\n      root._bokeh_onload_callbacks.forEach(function(callback) {\n        if (callback != null)\n          callback();\n      });\n    } finally {\n      delete root._bokeh_onload_callbacks;\n    }\n    console.debug(\"Bokeh: all callbacks have finished\");\n  }\n\n  function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n    if (css_urls == null) css_urls = [];\n    if (js_urls == null) js_urls = [];\n    if (js_modules == null) js_modules = [];\n    if (js_exports == null) js_exports = {};\n\n    root._bokeh_onload_callbacks.push(callback);\n\n    if (root._bokeh_is_loading > 0) {\n      console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n      return null;\n    }\n    if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n      run_callbacks();\n      return null;\n    }\n    if (!reloading) {\n      console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n    }\n\n    function on_load() {\n      root._bokeh_is_loading--;\n      if (root._bokeh_is_loading === 0) {\n        console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n        run_callbacks()\n      }\n    }\n    window._bokeh_on_load = on_load\n\n    function on_error() {\n      console.error(\"failed to load \" + url);\n    }\n\n    var skip = [];\n    if (window.requirejs) {\n      window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n      root._bokeh_is_loading = css_urls.length + 0;\n    } else {\n      root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n    }\n\n    var existing_stylesheets = []\n    var links = document.getElementsByTagName('link')\n    for (var i = 0; i < links.length; i++) {\n      var link = links[i]\n      if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n      }\n    }\n    for (var i = 0; i < css_urls.length; i++) {\n      var url = css_urls[i];\n      if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n      }\n      const element = document.createElement(\"link\");\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.rel = \"stylesheet\";\n      element.type = \"text/css\";\n      element.href = url;\n      console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n      document.body.appendChild(element);\n    }    var existing_scripts = []\n    var scripts = document.getElementsByTagName('script')\n    for (var i = 0; i < scripts.length; i++) {\n      var script = scripts[i]\n      if (script.src != null) {\n\texisting_scripts.push(script.src)\n      }\n    }\n    for (var i = 0; i < js_urls.length; i++) {\n      var url = js_urls[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (var i = 0; i < js_modules.length; i++) {\n      var url = js_modules[i];\n      if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onload = on_load;\n      element.onerror = on_error;\n      element.async = false;\n      element.src = url;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      document.head.appendChild(element);\n    }\n    for (const name in js_exports) {\n      var url = js_exports[name];\n      if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t  on_load();\n\t}\n\tcontinue;\n      }\n      var element = document.createElement('script');\n      element.onerror = on_error;\n      element.async = false;\n      element.type = \"module\";\n      console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n      element.textContent = `\n      import ${name} from \"${url}\"\n      window.${name} = ${name}\n      window._bokeh_on_load()\n      `\n      document.head.appendChild(element);\n    }\n    if (!js_urls.length && !js_modules.length) {\n      on_load()\n    }\n  };\n\n  function inject_raw_css(css) {\n    const element = document.createElement(\"style\");\n    element.appendChild(document.createTextNode(css));\n    document.body.appendChild(element);\n  }\n\n  var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.2.min.js\", \"https://cdn.holoviz.org/panel/1.4.4/dist/panel.min.js\"];\n  var js_modules = [];\n  var js_exports = {};\n  var css_urls = [];\n  var inline_js = [    function(Bokeh) {\n      Bokeh.set_log_level(\"info\");\n    },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n  ];\n\n  function run_inline_js() {\n    if ((root.Bokeh !== undefined) || (force === true)) {\n      for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n          inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t  if (!reloading) {\n\t    throw e;\n\t  }\n\t}\n      }\n      // Cache old bokeh versions\n      if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t  Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t  Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n      }} else if (Date.now() < root._bokeh_timeout) {\n      setTimeout(run_inline_js, 100);\n    } else if (!root._bokeh_failed_load) {\n      console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n      root._bokeh_failed_load = true;\n    }\n    root._bokeh_is_initializing = false\n  }\n\n  function load_or_wait() {\n    // Implement a backoff loop that tries to ensure we do not load multiple\n    // versions of Bokeh and its dependencies at the same time.\n    // In recent versions we use the root._bokeh_is_initializing flag\n    // to determine whether there is an ongoing attempt to initialize\n    // bokeh, however for backward compatibility we also try to ensure\n    // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n    // before older versions are fully initialized.\n    if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n      root._bokeh_is_initializing = false;\n      root._bokeh_onload_callbacks = undefined;\n      console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n      load_or_wait();\n    } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n      setTimeout(load_or_wait, 100);\n    } else {\n      root._bokeh_is_initializing = true\n      root._bokeh_onload_callbacks = []\n      var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n      if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n      }\n      load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n      });\n    }\n  }\n  // Give older versions of the autoload script a head-start to ensure\n  // they initialize before we start loading newer version.\n  setTimeout(load_or_wait, 100)\n}(window));"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
       "  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
       "}\n",
       "\n",
       "\n",
       "    function JupyterCommManager() {\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
       "      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        comm_manager.register_target(comm_id, function(comm) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        });\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        });\n",
       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
       "        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
       "          var messages = comm.messages[Symbol.asyncIterator]();\n",
       "          function processIteratorResult(result) {\n",
       "            var message = result.value;\n",
       "            console.log(message)\n",
       "            var content = {data: message.data, comm_id};\n",
       "            var buffers = []\n",
       "            for (var buffer of message.buffers || []) {\n",
       "              buffers.push(new DataView(buffer))\n",
       "            }\n",
       "            var metadata = message.metadata || {};\n",
       "            var msg = {content, buffers, metadata}\n",
       "            msg_handler(msg);\n",
       "            return messages.next().then(processIteratorResult);\n",
       "          }\n",
       "          return messages.next().then(processIteratorResult);\n",
       "        })\n",
       "      }\n",
       "    }\n",
       "\n",
       "    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
       "      if (comm_id in window.PyViz.comms) {\n",
       "        return window.PyViz.comms[comm_id];\n",
       "      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
       "        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
       "        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
       "        if (msg_handler) {\n",
       "          comm.on_msg(msg_handler);\n",
       "        }\n",
       "      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
       "        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
       "        comm.open();\n",
       "        if (msg_handler) {\n",
       "          comm.onMsg = msg_handler;\n",
       "        }\n",
       "      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
       "        var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
       "        comm_promise.then((comm) => {\n",
       "          window.PyViz.comms[comm_id] = comm;\n",
       "          if (msg_handler) {\n",
       "            var messages = comm.messages[Symbol.asyncIterator]();\n",
       "            function processIteratorResult(result) {\n",
       "              var message = result.value;\n",
       "              var content = {data: message.data};\n",
       "              var metadata = message.metadata || {comm_id};\n",
       "              var msg = {content, metadata}\n",
       "              msg_handler(msg);\n",
       "              return messages.next().then(processIteratorResult);\n",
       "            }\n",
       "            return messages.next().then(processIteratorResult);\n",
       "          }\n",
       "        }) \n",
       "        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
       "          return comm_promise.then((comm) => {\n",
       "            comm.send(data, metadata, buffers, disposeOnDone);\n",
       "          });\n",
       "        };\n",
       "        var comm = {\n",
       "          send: sendClosure\n",
       "        };\n",
       "      }\n",
       "      window.PyViz.comms[comm_id] = comm;\n",
       "      return comm;\n",
       "    }\n",
       "    window.PyViz.comm_manager = new JupyterCommManager();\n",
       "    \n",
       "\n",
       "\n",
       "var JS_MIME_TYPE = 'application/javascript';\n",
       "var HTML_MIME_TYPE = 'text/html';\n",
       "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
       "var CLASS_NAME = 'output';\n",
       "\n",
       "/**\n",
       " * Render data to the DOM node\n",
       " */\n",
       "function render(props, node) {\n",
       "  var div = document.createElement(\"div\");\n",
       "  var script = document.createElement(\"script\");\n",
       "  node.appendChild(div);\n",
       "  node.appendChild(script);\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when a new output is added\n",
       " */\n",
       "function handle_add_output(event, handle) {\n",
       "  var output_area = handle.output_area;\n",
       "  var output = handle.output;\n",
       "  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
       "    return\n",
       "  }\n",
       "  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
       "  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
       "  if (id !== undefined) {\n",
       "    var nchildren = toinsert.length;\n",
       "    var html_node = toinsert[nchildren-1].children[0];\n",
       "    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "    var scripts = [];\n",
       "    var nodelist = html_node.querySelectorAll(\"script\");\n",
       "    for (var i in nodelist) {\n",
       "      if (nodelist.hasOwnProperty(i)) {\n",
       "        scripts.push(nodelist[i])\n",
       "      }\n",
       "    }\n",
       "\n",
       "    scripts.forEach( function (oldScript) {\n",
       "      var newScript = document.createElement(\"script\");\n",
       "      var attrs = [];\n",
       "      var nodemap = oldScript.attributes;\n",
       "      for (var j in nodemap) {\n",
       "        if (nodemap.hasOwnProperty(j)) {\n",
       "          attrs.push(nodemap[j])\n",
       "        }\n",
       "      }\n",
       "      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
       "      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
       "      oldScript.parentNode.replaceChild(newScript, oldScript);\n",
       "    });\n",
       "    if (JS_MIME_TYPE in output.data) {\n",
       "      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
       "    }\n",
       "    output_area._hv_plot_id = id;\n",
       "    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
       "      window.PyViz.plot_index[id] = Bokeh.index[id];\n",
       "    } else {\n",
       "      window.PyViz.plot_index[id] = null;\n",
       "    }\n",
       "  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
       "    var bk_div = document.createElement(\"div\");\n",
       "    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
       "    var script_attrs = bk_div.children[0].attributes;\n",
       "    for (var i = 0; i < script_attrs.length; i++) {\n",
       "      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
       "    }\n",
       "    // store reference to server id on output_area\n",
       "    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle when an output is cleared or removed\n",
       " */\n",
       "function handle_clear_output(event, handle) {\n",
       "  var id = handle.cell.output_area._hv_plot_id;\n",
       "  var server_id = handle.cell.output_area._bokeh_server_id;\n",
       "  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
       "  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
       "  if (server_id !== null) {\n",
       "    comm.send({event_type: 'server_delete', 'id': server_id});\n",
       "    return;\n",
       "  } else if (comm !== null) {\n",
       "    comm.send({event_type: 'delete', 'id': id});\n",
       "  }\n",
       "  delete PyViz.plot_index[id];\n",
       "  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
       "    var doc = window.Bokeh.index[id].model.document\n",
       "    doc.clear();\n",
       "    const i = window.Bokeh.documents.indexOf(doc);\n",
       "    if (i > -1) {\n",
       "      window.Bokeh.documents.splice(i, 1);\n",
       "    }\n",
       "  }\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle kernel restart event\n",
       " */\n",
       "function handle_kernel_cleanup(event, handle) {\n",
       "  delete PyViz.comms[\"hv-extension-comm\"];\n",
       "  window.PyViz.plot_index = {}\n",
       "}\n",
       "\n",
       "/**\n",
       " * Handle update_display_data messages\n",
       " */\n",
       "function handle_update_output(event, handle) {\n",
       "  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
       "  handle_add_output(event, handle)\n",
       "}\n",
       "\n",
       "function register_renderer(events, OutputArea) {\n",
       "  function append_mime(data, metadata, element) {\n",
       "    // create a DOM node to render to\n",
       "    var toinsert = this.create_output_subarea(\n",
       "    metadata,\n",
       "    CLASS_NAME,\n",
       "    EXEC_MIME_TYPE\n",
       "    );\n",
       "    this.keyboard_manager.register_events(toinsert);\n",
       "    // Render to node\n",
       "    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
       "    render(props, toinsert[0]);\n",
       "    element.append(toinsert);\n",
       "    return toinsert\n",
       "  }\n",
       "\n",
       "  events.on('output_added.OutputArea', handle_add_output);\n",
       "  events.on('output_updated.OutputArea', handle_update_output);\n",
       "  events.on('clear_output.CodeCell', handle_clear_output);\n",
       "  events.on('delete.Cell', handle_clear_output);\n",
       "  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
       "\n",
       "  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
       "    safe: true,\n",
       "    index: 0\n",
       "  });\n",
       "}\n",
       "\n",
       "if (window.Jupyter !== undefined) {\n",
       "  try {\n",
       "    var events = require('base/js/events');\n",
       "    var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
       "    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
       "      register_renderer(events, OutputArea);\n",
       "    }\n",
       "  } catch(err) {\n",
       "  }\n",
       "}\n"
      ],
      "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n  window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n    function JupyterCommManager() {\n    }\n\n    JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n      if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        comm_manager.register_target(comm_id, function(comm) {\n          comm.on_msg(msg_handler);\n        });\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n          comm.onMsg = msg_handler;\n        });\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n          var messages = comm.messages[Symbol.asyncIterator]();\n          function processIteratorResult(result) {\n            var message = result.value;\n            console.log(message)\n            var content = {data: message.data, comm_id};\n            var buffers = []\n            for (var buffer of message.buffers || []) {\n              buffers.push(new DataView(buffer))\n            }\n            var metadata = message.metadata || {};\n            var msg = {content, buffers, metadata}\n            msg_handler(msg);\n            return messages.next().then(processIteratorResult);\n          }\n          return messages.next().then(processIteratorResult);\n        })\n      }\n    }\n\n    JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n      if (comm_id in window.PyViz.comms) {\n        return window.PyViz.comms[comm_id];\n      } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n        var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n        var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n        if (msg_handler) {\n          comm.on_msg(msg_handler);\n        }\n      } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n        var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n        comm.open();\n        if (msg_handler) {\n          comm.onMsg = msg_handler;\n        }\n      } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n        var comm_promise = google.colab.kernel.comms.open(comm_id)\n        comm_promise.then((comm) => {\n          window.PyViz.comms[comm_id] = comm;\n          if (msg_handler) {\n            var messages = comm.messages[Symbol.asyncIterator]();\n            function processIteratorResult(result) {\n              var message = result.value;\n              var content = {data: message.data};\n              var metadata = message.metadata || {comm_id};\n              var msg = {content, metadata}\n              msg_handler(msg);\n              return messages.next().then(processIteratorResult);\n            }\n            return messages.next().then(processIteratorResult);\n          }\n        }) \n        var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n          return comm_promise.then((comm) => {\n            comm.send(data, metadata, buffers, disposeOnDone);\n          });\n        };\n        var comm = {\n          send: sendClosure\n        };\n      }\n      window.PyViz.comms[comm_id] = comm;\n      return comm;\n    }\n    window.PyViz.comm_manager = new JupyterCommManager();\n    \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n  var div = document.createElement(\"div\");\n  var script = document.createElement(\"script\");\n  node.appendChild(div);\n  node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n  var output_area = handle.output_area;\n  var output = handle.output;\n  if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n    return\n  }\n  var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n  var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n  if (id !== undefined) {\n    var nchildren = toinsert.length;\n    var html_node = toinsert[nchildren-1].children[0];\n    html_node.innerHTML = output.data[HTML_MIME_TYPE];\n    var scripts = [];\n    var nodelist = html_node.querySelectorAll(\"script\");\n    for (var i in nodelist) {\n      if (nodelist.hasOwnProperty(i)) {\n        scripts.push(nodelist[i])\n      }\n    }\n\n    scripts.forEach( function (oldScript) {\n      var newScript = document.createElement(\"script\");\n      var attrs = [];\n      var nodemap = oldScript.attributes;\n      for (var j in nodemap) {\n        if (nodemap.hasOwnProperty(j)) {\n          attrs.push(nodemap[j])\n        }\n      }\n      attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n      newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n      oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n    if (JS_MIME_TYPE in output.data) {\n      toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n    }\n    output_area._hv_plot_id = id;\n    if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n      window.PyViz.plot_index[id] = Bokeh.index[id];\n    } else {\n      window.PyViz.plot_index[id] = null;\n    }\n  } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n    var bk_div = document.createElement(\"div\");\n    bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n    var script_attrs = bk_div.children[0].attributes;\n    for (var i = 0; i < script_attrs.length; i++) {\n      toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n    }\n    // store reference to server id on output_area\n    output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n  }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n  var id = handle.cell.output_area._hv_plot_id;\n  var server_id = handle.cell.output_area._bokeh_server_id;\n  if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n  var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n  if (server_id !== null) {\n    comm.send({event_type: 'server_delete', 'id': server_id});\n    return;\n  } else if (comm !== null) {\n    comm.send({event_type: 'delete', 'id': id});\n  }\n  delete PyViz.plot_index[id];\n  if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n    var doc = window.Bokeh.index[id].model.document\n    doc.clear();\n    const i = window.Bokeh.documents.indexOf(doc);\n    if (i > -1) {\n      window.Bokeh.documents.splice(i, 1);\n    }\n  }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n  delete PyViz.comms[\"hv-extension-comm\"];\n  window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n  handle_clear_output(event, {cell: {output_area: handle.output_area}})\n  handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n  function append_mime(data, metadata, element) {\n    // create a DOM node to render to\n    var toinsert = this.create_output_subarea(\n    metadata,\n    CLASS_NAME,\n    EXEC_MIME_TYPE\n    );\n    this.keyboard_manager.register_events(toinsert);\n    // Render to node\n    var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n    render(props, toinsert[0]);\n    element.append(toinsert);\n    return toinsert\n  }\n\n  events.on('output_added.OutputArea', handle_add_output);\n  events.on('output_updated.OutputArea', handle_update_output);\n  events.on('clear_output.CodeCell', handle_clear_output);\n  events.on('delete.Cell', handle_clear_output);\n  events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n  OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n    safe: true,\n    index: 0\n  });\n}\n\nif (window.Jupyter !== undefined) {\n  try {\n    var events = require('base/js/events');\n    var OutputArea = require('notebook/js/outputarea').OutputArea;\n    if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n      register_renderer(events, OutputArea);\n    }\n  } catch(err) {\n  }\n}\n"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<style>*[data-root-id],\n",
       "*[data-root-id] > * {\n",
       "  box-sizing: border-box;\n",
       "  font-family: var(--jp-ui-font-family);\n",
       "  font-size: var(--jp-ui-font-size1);\n",
       "  color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
       "}\n",
       "\n",
       "/* Override VSCode background color */\n",
       ".cell-output-ipywidget-background:has(\n",
       "    > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
       "  ),\n",
       ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
       "  background-color: transparent !important;\n",
       "}\n",
       "</style>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.holoviews_exec.v0+json": "",
      "text/html": [
       "<div id='p1100'>\n",
       "  <div id=\"d24788ee-7e56-49e8-bbf7-06e9ae609a7e\" data-root-id=\"p1100\" style=\"display: contents;\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  var docs_json = {\"350881a1-7f80-4f50-a849-de548b2a9b15\":{\"version\":\"3.4.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"p1100\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"p1101\",\"attributes\":{\"plot_id\":\"p1100\",\"comm_id\":\"96f1f295cabc443ba2f844763fe404a7\",\"client_comm_id\":\"ec4f9d47595649019d62c8394642b279\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]}]}};\n",
       "  var render_items = [{\"docid\":\"350881a1-7f80-4f50-a849-de548b2a9b15\",\"roots\":{\"p1100\":\"d24788ee-7e56-49e8-bbf7-06e9ae609a7e\"},\"root_ids\":[\"p1100\"]}];\n",
       "  var docs = Object.values(docs_json)\n",
       "  if (!docs) {\n",
       "    return\n",
       "  }\n",
       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
       "  async function embed_document(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "    for (const render_item of render_items) {\n",
       "      for (const root_id of render_item.root_ids) {\n",
       "\tconst id_el = document.getElementById(root_id)\n",
       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
       "\t  const root_el = id_el.children[0]\n",
       "\t  root_el.id = root_el.id + '-rendered'\n",
       "\t  for (const child of root_el.children) {\n",
       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  function get_bokeh(root) {\n",
       "    if (root.Bokeh === undefined) {\n",
       "      return null\n",
       "    } else if (root.Bokeh.version !== py_version) {\n",
       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
       "\treturn null\n",
       "      }\n",
       "      return root.Bokeh.versions.get(py_version);\n",
       "    } else if (root.Bokeh.version === py_version) {\n",
       "      return root.Bokeh\n",
       "    }\n",
       "    return null\n",
       "  }\n",
       "  function is_loaded(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
       "  }\n",
       "  if (is_loaded(root)) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (is_loaded(root)) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else if (document.readyState == \"complete\") {\n",
       "        attempts++;\n",
       "        if (attempts > 200) {\n",
       "          clearInterval(timer);\n",
       "\t  var Bokeh = get_bokeh(root)\n",
       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
       "\t  } else {\n",
       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
       "\t    embed_document(root)\n",
       "\t  }\n",
       "        }\n",
       "      }\n",
       "    }, 25, root)\n",
       "  }\n",
       "})(window);</script>"
      ]
     },
     "metadata": {
      "application/vnd.holoviews_exec.v0+json": {
       "id": "p1100"
      }
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<div class=\"logo-block\">\n",
       "<img src='\n",
       "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\n",
       "roTBs2RqAAAAAElFTkSuQmCC'\n",
       "     style='height:25px; border-radius:12px; display: inline-block; float: left; vertical-align: middle'></img>\n",
       "\n",
       "\n",
       "  <img src=''\n",
       "       style='height:15px; border-radius:12px; display: inline-block; float: left'></img>\n",
       "  \n",
       "\n",
       "\n",
       "\n",
       "\n",
       "</div>\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {},
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.holoviews_exec.v0+json": "",
      "text/html": [
       "<div id='p1102'>\n",
       "  <div id=\"cd6ee080-7220-43a2-a847-809516af9a14\" data-root-id=\"p1102\" style=\"display: contents;\"></div>\n",
       "</div>\n",
       "<script type=\"application/javascript\">(function(root) {\n",
       "  var docs_json = {\"877455d4-7f29-445e-9b96-b54f7046a3cb\":{\"version\":\"3.4.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1102\",\"attributes\":{\"name\":\"Row01185\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1105\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1308\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1103\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1104\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.4.4/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1106\",\"attributes\":{\"name\":\"HSpacer01191\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1105\"},{\"id\":\"p1103\"},{\"id\":\"p1104\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"GridPlot\",\"id\":\"p1295\",\"attributes\":{\"rows\":null,\"cols\":null,\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1304\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p1299\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1114\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":\"auto\",\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1215\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":\"auto\",\"zoom_together\":\"none\"}}]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1300\"},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p1301\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1154\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1253\"}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p1302\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1155\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1156\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1254\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1255\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}}]}},{\"type\":\"object\",\"name\":\"ToolProxy\",\"id\":\"p1303\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1161\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1260\"}]}}]}},\"children\":[[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1119\",\"attributes\":{\"width\":1000,\"height\":400,\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1107\",\"attributes\":{\"tags\":[[[\"x\",null]],[]],\"start\":1723161600000.0,\"end\":1723161900000.0,\"reset_start\":1723161600000.0,\"reset_end\":1723161900000.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1108\",\"attributes\":{\"name\":\"Equity\",\"tags\":[[[\"Equity\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":-2204.219194000104,\"end\":631.2926540000094,\"reset_start\":-2204.219194000104,\"reset_end\":631.2926540000094}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1129\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1130\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"Price\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1109\",\"attributes\":{\"name\":\"Price\",\"tags\":[[[\"Price\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":61510.12,\"end\":61725.280000000006,\"reset_start\":61510.12,\"reset_end\":61725.280000000006}}]]},\"extra_y_scales\":{\"type\":\"map\",\"entries\":[[\"Price\",{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1112\"}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1122\",\"attributes\":{\"text\":\"Equity\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1175\",\"attributes\":{\"name\":\"Equity\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1166\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1167\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1168\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAA9kYTeUIAAHH4RhN5QgAA4vpGE3lCAABT/UYTeUIAAMT/RhN5QgAANQJHE3lCAACmBEcTeUIAABcHRxN5QgAAiAlHE3lCAAD5C0cTeUIAAGoORxN5QgAA2xBHE3lCAABME0cTeUIAAL0VRxN5QgAALhhHE3lCAACfGkcTeUIAABAdRxN5QgAAgR9HE3lCAADyIUcTeUIAAGMkRxN5QgAA1CZHE3lCAABFKUcTeUIAALYrRxN5QgAAJy5HE3lCAACYMEcTeUIAAAkzRxN5QgAAejVHE3lCAADrN0cTeUIAAFw6RxN5QgAAzTxHE3lCAAA+P0cTeUI=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Equity\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"GG3PLAn0WMCEfi9pjKpTwHubKNAn6mLALNkF2EdvUMDUBbzoK2hZwLIA/reSCWHArBU/xtx5hMBbFyLgEKaDwKxTC170HHPAGnrqymdCd8AdaJKRM4aAwEIdeO49joPAPJpgcTgUhcDk1cYR67+HwO6tbvXcKZDAOftEnmTFkMBdfw7zJQ+RwNqGinF+U4vA3o2XblKikMANI6ZE0pCSwEiYi/hOepTAhgaGrC6rlcD3Dr4w2eOWwBMmBoHVgpfAgkqTUpBdmsArVIfczAycwF3b5sa0v57AbCjChmd/ncDoG4aPSDuewJAMgPFM653A4F7hXW5pnsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1176\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1177\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1172\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1180\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1173\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1174\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1190\",\"attributes\":{\"name\":\"Equity w/o fee\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1181\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1182\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1183\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAA9kYTeUIAAHH4RhN5QgAA4vpGE3lCAABT/UYTeUIAAMT/RhN5QgAANQJHE3lCAACmBEcTeUIAABcHRxN5QgAAiAlHE3lCAAD5C0cTeUIAAGoORxN5QgAA2xBHE3lCAABME0cTeUIAAL0VRxN5QgAALhhHE3lCAACfGkcTeUIAABAdRxN5QgAAgR9HE3lCAADyIUcTeUIAAGMkRxN5QgAA1CZHE3lCAABFKUcTeUIAALYrRxN5QgAAJy5HE3lCAACYMEcTeUIAAAkzRxN5QgAAejVHE3lCAADrN0cTeUIAAFw6RxN5QgAAzTxHE3lCAAA+P0cTeUI=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Equity\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AHBmZmbmKsAA8P///29UQABAMzMzs1FAAKCZmZlBa0AAopmZmXluQAAEAAAA7HBAAEAzMzNDX8AAAM3MzKxIwACUmZmZLXRAAJSZmZnhc0AA+P///z9wQAD2////V3BAAJCZmZklcUAA8P///09vQACgzMzMLE9AACAzMzNzW0AAODMzMwtgQAAAAAAAsHhAADEzMzP3ckAAMDMzM2dxQABgZmZmNmtAAMTMzMzsakAAKzMzM9toQACQmZmZIW1AAJyZmZkpZEAAQDMzM7NZQAAAmpmZmTTAACQzMzPDY0AA9P///5dlQABWZmZmtmxAAIiZmZnZa0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1191\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1192\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1187\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1194\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1188\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1189\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Equity\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1204\",\"attributes\":{\"name\":\"Price\",\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:muted\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1297\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"src\",{\"id\":\"p1204\"}],[\"dst\",{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1289\",\"attributes\":{\"name\":\"Price\",\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:muted\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1298\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"src\",{\"id\":\"p1289\"}],[\"dst\",{\"id\":\"p1204\"}]]},\"code\":\"dst.muted = src.muted\"}}]]]},\"y_range_name\":\"Price\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1280\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1281\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1282\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAA9kYTeUIAAHH4RhN5QgAA4vpGE3lCAABT/UYTeUIAAMT/RhN5QgAANQJHE3lCAACmBEcTeUIAABcHRxN5QgAAiAlHE3lCAAD5C0cTeUIAAGoORxN5QgAA2xBHE3lCAABME0cTeUIAAL0VRxN5QgAALhhHE3lCAACfGkcTeUIAABAdRxN5QgAAgR9HE3lCAADyIUcTeUIAAGMkRxN5QgAA1CZHE3lCAABFKUcTeUIAALYrRxN5QgAAJy5HE3lCAACYMEcTeUIAAAkzRxN5QgAAejVHE3lCAADrN0cTeUIAAFw6RxN5QgAAzTxHE3lCAAA+P0cTeUI=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Price\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"NDMzM2sh7kA0MzMz+x/uQAAAAAC4H+5AmpmZmSEa7kCamZmZwRfuQM7MzMwkFO5AmpmZmQEL7kA0MzMzWwzuQGZmZmYeE+5AAAAAAFgS7kCamZmZMRHuQJqZmZkBEO5AmpmZmZEV7kBmZmZmfhbuQJqZmZmBG+5AmpmZmUEa7kBmZmZmrhnuQGdmZmZWFO5AmpmZmSEW7kA0MzMz2xjuQJqZmZkBE+5AzszMzLQV7kCamZmZsRbuQJqZmZmhFO5AZmZmZr4X7kBmZmZmLhnuQM7MzMwkG+5AZmZmZt4V7kBmZmZmLhXuQAAAAABIEe5AmpmZmSES7kA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1290\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1291\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1286\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1293\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1287\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1288\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}}}}]]},\"code\":\"dst.muted = src.muted\"}}]]]},\"y_range_name\":\"Price\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1195\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1196\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1197\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAA9kYTeUIAAHH4RhN5QgAA4vpGE3lCAABT/UYTeUIAAMT/RhN5QgAANQJHE3lCAACmBEcTeUIAABcHRxN5QgAAiAlHE3lCAAD5C0cTeUIAAGoORxN5QgAA2xBHE3lCAABME0cTeUIAAL0VRxN5QgAALhhHE3lCAACfGkcTeUIAABAdRxN5QgAAgR9HE3lCAADyIUcTeUIAAGMkRxN5QgAA1CZHE3lCAABFKUcTeUIAALYrRxN5QgAAJy5HE3lCAACYMEcTeUIAAAkzRxN5QgAAejVHE3lCAADrN0cTeUIAAFw6RxN5QgAAzTxHE3lCAAA+P0cTeUI=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Price\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"NDMzM2sh7kA0MzMz+x/uQAAAAAC4H+5AmpmZmSEa7kCamZmZwRfuQM7MzMwkFO5AmpmZmQEL7kA0MzMzWwzuQGZmZmYeE+5AAAAAAFgS7kCamZmZMRHuQJqZmZkBEO5AmpmZmZEV7kBmZmZmfhbuQJqZmZmBG+5AmpmZmUEa7kBmZmZmrhnuQGdmZmZWFO5AmpmZmSEW7kA0MzMz2xjuQJqZmZkBE+5AzszMzLQV7kCamZmZsRbuQJqZmZmhFO5AZmZmZr4X7kBmZmZmLhnuQM7MzMwkG+5AZmZmZt4V7kBmZmZmLhXuQAAAAABIEe5AmpmZmSES7kA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1205\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1206\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1201\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1208\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1202\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1203\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Price\"},\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1128\",\"attributes\":{\"tools\":[{\"id\":\"p1114\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1153\"},{\"id\":\"p1154\"},{\"id\":\"p1155\"},{\"id\":\"p1161\"}],\"active_drag\":{\"id\":\"p1154\"},\"active_scroll\":{\"id\":\"p1114\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1148\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1149\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1150\"},\"axis_label\":\"Equity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1151\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1162\",\"attributes\":{\"y_range_name\":\"Price\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1163\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1164\"},\"axis_label\":\"Price\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1165\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1178\",\"attributes\":{\"location\":[0,0],\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1179\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Equity\"},\"renderers\":[{\"id\":\"p1175\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1193\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Equity w/o fee\"},\"renderers\":[{\"id\":\"p1190\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1207\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Price\"},\"renderers\":[{\"id\":\"p1204\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p1131\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p1132\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1133\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1134\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1135\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1136\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1137\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1138\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1139\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1140\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1141\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1142\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1143\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p1144\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1145\"},\"axis_label\":\"timestamp\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1146\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1147\",\"attributes\":{\"axis\":{\"id\":\"p1131\"},\"ticker\":{\"id\":\"p1132\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1152\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1148\"},\"ticker\":{\"id\":\"p1149\"}}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},0,0],[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1218\",\"attributes\":{\"width\":1000,\"height\":400,\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"id\":\"p1107\"},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1209\",\"attributes\":{\"name\":\"Position (Qty)\",\"tags\":[[[\"Position (Qty)\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":-8.6,\"end\":10.6,\"reset_start\":-8.6,\"reset_end\":10.6}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1228\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1229\"},\"extra_y_ranges\":{\"type\":\"map\",\"entries\":[[\"Price\",{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1210\",\"attributes\":{\"name\":\"Price\",\"tags\":[[[\"Price\",null]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":61510.12,\"end\":61725.280000000006,\"reset_start\":61510.12,\"reset_end\":61725.280000000006}}]]},\"extra_y_scales\":{\"type\":\"map\",\"entries\":[[\"Price\",{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1213\"}]]},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1221\",\"attributes\":{\"text\":\"Position\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1274\",\"attributes\":{\"name\":\"Position\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1265\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1266\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1267\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAA9kYTeUIAAHH4RhN5QgAA4vpGE3lCAABT/UYTeUIAAMT/RhN5QgAANQJHE3lCAACmBEcTeUIAABcHRxN5QgAAiAlHE3lCAAD5C0cTeUIAAGoORxN5QgAA2xBHE3lCAABME0cTeUIAAL0VRxN5QgAALhhHE3lCAACfGkcTeUIAABAdRxN5QgAAgR9HE3lCAADyIUcTeUIAAGMkRxN5QgAA1CZHE3lCAABFKUcTeUIAALYrRxN5QgAAJy5HE3lCAACYMEcTeUIAAAkzRxN5QgAAejVHE3lCAADrN0cTeUIAAFw6RxN5QgAAzTxHE3lCAAA+P0cTeUI=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Position (Qty)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAA8L8AAAAAAAAcwAAAAAAAABDAAAAAAAAACMAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAHEAAAAAAAAAiQAAAAAAAABRAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAABAAAAAAAAACMAAAAAAAAAQwAAAAAAAABzAAAAAAAAAGMAAAAAAAAAcwAAAAAAAABTAAAAAAAAA8L8AAAAAAADwvwAAAAAAAABAAAAAAAAAAMAAAAAAAADwPwAAAAAAAPC/AAAAAAAAEMAAAAAAAAAYwAAAAAAAABjAAAAAAAAAEMAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1275\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1276\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1271\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Position (Qty)\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1279\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Position (Qty)\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1272\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Position (Qty)\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1273\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"Position (Qty)\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"id\":\"p1289\"}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1227\",\"attributes\":{\"tools\":[{\"id\":\"p1215\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1252\"},{\"id\":\"p1253\"},{\"id\":\"p1254\"},{\"id\":\"p1260\"}],\"active_drag\":{\"id\":\"p1253\"},\"active_scroll\":{\"id\":\"p1215\"}}},\"toolbar_location\":null,\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1247\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1248\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1249\"},\"axis_label\":\"Position (Qty)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1250\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1261\",\"attributes\":{\"y_range_name\":\"Price\",\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1262\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1263\"},\"axis_label\":\"Price\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1264\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1277\",\"attributes\":{\"location\":[0,0],\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1278\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Position\"},\"renderers\":[{\"id\":\"p1274\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1292\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Price\"},\"renderers\":[{\"id\":\"p1289\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p1230\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p1231\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1232\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1233\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1234\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1235\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1236\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1237\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1238\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1239\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1240\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1241\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1242\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p1243\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1244\"},\"axis_label\":\"timestamp\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1245\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1246\",\"attributes\":{\"axis\":{\"id\":\"p1230\"},\"ticker\":{\"id\":\"p1231\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1251\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1247\"},\"ticker\":{\"id\":\"p1248\"}}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},1,0]]}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1306\",\"attributes\":{\"name\":\"HSpacer01192\",\"stylesheets\":[\"\\n:host(.pn-loading):before, .pn-loading:before {\\n  background-color: #c3c3c3;\\n  mask-size: auto calc(min(50%, 400px));\\n  -webkit-mask-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1105\"},{\"id\":\"p1103\"},{\"id\":\"p1104\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"gap\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"TemplateEditor1\",\"properties\":[{\"name\":\"layout\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]}]}};\n",
       "  var render_items = [{\"docid\":\"877455d4-7f29-445e-9b96-b54f7046a3cb\",\"roots\":{\"p1102\":\"cd6ee080-7220-43a2-a847-809516af9a14\"},\"root_ids\":[\"p1102\"]}];\n",
       "  var docs = Object.values(docs_json)\n",
       "  if (!docs) {\n",
       "    return\n",
       "  }\n",
       "  const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
       "  async function embed_document(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    await Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
       "    for (const render_item of render_items) {\n",
       "      for (const root_id of render_item.root_ids) {\n",
       "\tconst id_el = document.getElementById(root_id)\n",
       "\tif (id_el.children.length && id_el.children[0].hasAttribute('data-root-id')) {\n",
       "\t  const root_el = id_el.children[0]\n",
       "\t  root_el.id = root_el.id + '-rendered'\n",
       "\t  for (const child of root_el.children) {\n",
       "            // Ensure JupyterLab does not capture keyboard shortcuts\n",
       "            // see: https://jupyterlab.readthedocs.io/en/4.1.x/extension/notebook.html#keyboard-interaction-model\n",
       "\t    child.setAttribute('data-lm-suppress-shortcuts', 'true')\n",
       "\t  }\n",
       "\t}\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  function get_bokeh(root) {\n",
       "    if (root.Bokeh === undefined) {\n",
       "      return null\n",
       "    } else if (root.Bokeh.version !== py_version) {\n",
       "      if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
       "\treturn null\n",
       "      }\n",
       "      return root.Bokeh.versions.get(py_version);\n",
       "    } else if (root.Bokeh.version === py_version) {\n",
       "      return root.Bokeh\n",
       "    }\n",
       "    return null\n",
       "  }\n",
       "  function is_loaded(root) {\n",
       "    var Bokeh = get_bokeh(root)\n",
       "    return (Bokeh != null && Bokeh.Panel !== undefined)\n",
       "  }\n",
       "  if (is_loaded(root)) {\n",
       "    embed_document(root);\n",
       "  } else {\n",
       "    var attempts = 0;\n",
       "    var timer = setInterval(function(root) {\n",
       "      if (is_loaded(root)) {\n",
       "        clearInterval(timer);\n",
       "        embed_document(root);\n",
       "      } else if (document.readyState == \"complete\") {\n",
       "        attempts++;\n",
       "        if (attempts > 200) {\n",
       "          clearInterval(timer);\n",
       "\t  var Bokeh = get_bokeh(root)\n",
       "\t  if (Bokeh == null || Bokeh.Panel == null) {\n",
       "            console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
       "\t  } else {\n",
       "\t    console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
       "\t    embed_document(root)\n",
       "\t  }\n",
       "        }\n",
       "      }\n",
       "    }, 25, root)\n",
       "  }\n",
       "})(window);</script>"
      ],
      "text/plain": [
       ":Layout\n",
       "   .Overlay.Equity   :Overlay\n",
       "      .Curve.Equity              :Curve   [x]   (Equity)\n",
       "      .Curve.Equity_w_over_o_fee :Curve   [x]   (Equity)\n",
       "      .Curve.Price               :Curve   [x]   (Price)\n",
       "   .Overlay.Position :Overlay\n",
       "      .Curve.Position :Curve   [x]   (Position (Qty))\n",
       "      .Curve.Price    :Curve   [x]   (Price)"
      ]
     },
     "execution_count": 33,
     "metadata": {
      "application/vnd.holoviews_exec.v0+json": {
       "id": "p1102"
      }
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import holoviews as hv\n",
    "hv.extension('bokeh')\n",
    "\n",
    "stats.plot(backend='holoviews')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
